1Name 2 3 EXT_draw_transform_feedback 4 5Name Strings 6 7 GL_EXT_draw_transform_feedback 8 9Contact 10 11 Mark Callow (khronos 'at' callow.im) 12 13Notice 14 15 Copyright (c) 2016 The Khronos Group Inc. Copyright terms at 16 http://www.khronos.org/registry/speccopyright.html 17 18Status 19 20 Complete 21 22IP Status 23 24 No known IP issues 25 26Version 27 28 Date: Oct 14, 2016 29 Revision: 2 30 31Number 32 33 OpenGL ES Extension #272 34 35Dependencies 36 37 Requires OpenGL ES 3.2. 38 39 Written based on the wording of the OpenGL ES 3.2 specification 40 (June 15th, 2016). 41 42Overview 43 44 This extension adds the DrawTransformFeedback commands. These 45 were omitted from OpenGL ES 3.0 because the number of vertices 46 captured by transform feedback could never be different than 47 the number drawn during capture. The addition of geometry shaders 48 in OpenGL ES 3.2 broke that assumption but, due to an oversight, 49 DrawTransformFeedback et al were not reinstated. The 50 DrawTransformFeedback commands unlock the full potential of 51 geometry shaders. 52 53Issues 54 55 None 56 57New Procedures and Functions 58 59 void DrawTransformFeedbackEXT( enum mode, uint id ); 60 void DrawTransformFeedbackInstancedEXT( enum mode, uint id, sizei instancecount ); 61 62New Tokens 63 64 None 65 66Additions to Chapter 1-11 of the OpenGL ES 3.2 specification 67 68 None 69 70Additions to Chapter 12 of the OpenGL 3.2 Specification (Fixed- 71Function Vertex Post-Processing) 72 73 Add new section 12.1.3 Transform Feedback Draw Operations 74 75 When transform feedback is active, the values of output variables 76 or transformed vertex attributes are captured into the buffer 77 objects attached to the current transform feedback object. 78 After transform feedback is complete, subsequent rendering 79 operations may use the contents of these buffer objects (see 80 section 6). The number of vertices captured during transform 81 feedback is stored in the transform feedback object and may be 82 used in conjunction with the commands 83 84 void DrawTransformFeedbackEXT( enum mode, uint id ); 85 void DrawTransformFeedbackInstancedEXT( enum mode, uint id, 86 sizei instancecount ); 87 88 to replay the captured vertices. 89 Calling DrawTransformFeedbackInstancedEXT is equivalent 90 to calling DrawArraysInstanced with mode as specified, first 91 set to zero, count set to the number of vertices captured the 92 last time transform feedback was active on the transform feedback 93 object named id, and instancecount as specified. 94 Calling DrawTransformFeedbackEXT is equivalent to calling 95 DrawTransformFeedbackInstancedEXT with instancecount set to 96 one. 97 Note that the vertex count is from the number of vertices 98 recorded during the transform feedback operation. If no 99 outputs are recorded, the corresponding vertex count will be 100 zero. 101 102 No error is generated if the transform feedback object named 103 by id is active; the vertex count used for the rendering operation 104 is set by the previous EndTransformFeedback command. 105 106 Errors 107 108 An INVALID_VALUE error is generated if id is not the name of a 109 transform feedback object. 110 111 An INVALID_VALUE error is generated if instancecount is negative. 112 113 An INVALID_OPERATION error is generated if EndTransformFeedback 114 has never been called while the object named by id was bound. 115 116Additions to Chapters 13-21 of the OpenGL 3.2 Specification 117 118 None 119 120Additions to the EGL/AGL/GLX/WGL Specifications 121 122 None 123 124GLX Protocol 125 126 n/a 127 128New State 129 130 None 131 132Revision History 133 134 Rev. Date Author Changes 135 ---- -------- --------- ----------------------------------------- 136 0 09/14/16 markc Initial draft. 137 1 09/27/16 markc Add suffices. Remove vestiges of 138 "stream". Change overview to plural. 139 2 10/14/16 markc Change to EXT. 140 141# vim:ai:ts=4:sts=4:sw=4:expandtab:textwidth=70 142