15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_draw_transform_feedback 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_draw_transform_feedback 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Mark Callow (khronos 'at' callow.im) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNotice 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Copyright (c) 2016 The Khronos Group Inc. Copyright terms at 165bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciStatus 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Complete 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciIP Status 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci No known IP issues 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciVersion 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci Date: Oct 14, 2016 295bd8deadSopenharmony_ci Revision: 2 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciNumber 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci OpenGL ES Extension #272 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ciDependencies 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci Requires OpenGL ES 3.2. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci Written based on the wording of the OpenGL ES 3.2 specification 405bd8deadSopenharmony_ci (June 15th, 2016). 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ciOverview 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci This extension adds the DrawTransformFeedback commands. These 455bd8deadSopenharmony_ci were omitted from OpenGL ES 3.0 because the number of vertices 465bd8deadSopenharmony_ci captured by transform feedback could never be different than 475bd8deadSopenharmony_ci the number drawn during capture. The addition of geometry shaders 485bd8deadSopenharmony_ci in OpenGL ES 3.2 broke that assumption but, due to an oversight, 495bd8deadSopenharmony_ci DrawTransformFeedback et al were not reinstated. The 505bd8deadSopenharmony_ci DrawTransformFeedback commands unlock the full potential of 515bd8deadSopenharmony_ci geometry shaders. 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ciIssues 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci None 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ciNew Procedures and Functions 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci void DrawTransformFeedbackEXT( enum mode, uint id ); 605bd8deadSopenharmony_ci void DrawTransformFeedbackInstancedEXT( enum mode, uint id, sizei instancecount ); 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ciNew Tokens 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci None 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ciAdditions to Chapter 1-11 of the OpenGL ES 3.2 specification 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci None 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ciAdditions to Chapter 12 of the OpenGL 3.2 Specification (Fixed- 715bd8deadSopenharmony_ciFunction Vertex Post-Processing) 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci Add new section 12.1.3 Transform Feedback Draw Operations 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci When transform feedback is active, the values of output variables 765bd8deadSopenharmony_ci or transformed vertex attributes are captured into the buffer 775bd8deadSopenharmony_ci objects attached to the current transform feedback object. 785bd8deadSopenharmony_ci After transform feedback is complete, subsequent rendering 795bd8deadSopenharmony_ci operations may use the contents of these buffer objects (see 805bd8deadSopenharmony_ci section 6). The number of vertices captured during transform 815bd8deadSopenharmony_ci feedback is stored in the transform feedback object and may be 825bd8deadSopenharmony_ci used in conjunction with the commands 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci void DrawTransformFeedbackEXT( enum mode, uint id ); 855bd8deadSopenharmony_ci void DrawTransformFeedbackInstancedEXT( enum mode, uint id, 865bd8deadSopenharmony_ci sizei instancecount ); 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci to replay the captured vertices. 895bd8deadSopenharmony_ci Calling DrawTransformFeedbackInstancedEXT is equivalent 905bd8deadSopenharmony_ci to calling DrawArraysInstanced with mode as specified, first 915bd8deadSopenharmony_ci set to zero, count set to the number of vertices captured the 925bd8deadSopenharmony_ci last time transform feedback was active on the transform feedback 935bd8deadSopenharmony_ci object named id, and instancecount as specified. 945bd8deadSopenharmony_ci Calling DrawTransformFeedbackEXT is equivalent to calling 955bd8deadSopenharmony_ci DrawTransformFeedbackInstancedEXT with instancecount set to 965bd8deadSopenharmony_ci one. 975bd8deadSopenharmony_ci Note that the vertex count is from the number of vertices 985bd8deadSopenharmony_ci recorded during the transform feedback operation. If no 995bd8deadSopenharmony_ci outputs are recorded, the corresponding vertex count will be 1005bd8deadSopenharmony_ci zero. 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci No error is generated if the transform feedback object named 1035bd8deadSopenharmony_ci by id is active; the vertex count used for the rendering operation 1045bd8deadSopenharmony_ci is set by the previous EndTransformFeedback command. 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci Errors 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci An INVALID_VALUE error is generated if id is not the name of a 1095bd8deadSopenharmony_ci transform feedback object. 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci An INVALID_VALUE error is generated if instancecount is negative. 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci An INVALID_OPERATION error is generated if EndTransformFeedback 1145bd8deadSopenharmony_ci has never been called while the object named by id was bound. 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ciAdditions to Chapters 13-21 of the OpenGL 3.2 Specification 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ci None 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ciAdditions to the EGL/AGL/GLX/WGL Specifications 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci None 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ciGLX Protocol 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ci n/a 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ciNew State 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci None 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ciRevision History 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Rev. Date Author Changes 1355bd8deadSopenharmony_ci ---- -------- --------- ----------------------------------------- 1365bd8deadSopenharmony_ci 0 09/14/16 markc Initial draft. 1375bd8deadSopenharmony_ci 1 09/27/16 markc Add suffices. Remove vestiges of 1385bd8deadSopenharmony_ci "stream". Change overview to plural. 1395bd8deadSopenharmony_ci 2 10/14/16 markc Change to EXT. 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci# vim:ai:ts=4:sts=4:sw=4:expandtab:textwidth=70 142