| |
| Name |
| |
| EXT_multi_draw_arrays |
| SUN_multi_draw_arrays |
| |
| Name Strings |
| |
| GL_EXT_multi_draw_arrays |
| GL_SUN_multi_draw_arrays |
| |
| (Note: this extension has been promoted from SUN to EXT status. |
| Implementations should advertise both name strings, and both EXT |
| and SUN versions of the new GL functions should be provided). |
| |
| Contact |
| |
| Ron Bielaski, Sun (Ron.Bielaski 'at' eng.sun.com) |
| Jack Middleton, Sun (Jack.Middleton 'at' eng.sun.com) |
| |
| Status |
| |
| Shipping |
| |
| Version |
| |
| Version 4, June 18, 2013 |
| |
| Number |
| |
| 148 |
| OpenGL ES Extension #69 |
| |
| Dependencies |
| |
| OpenGL 1.1 is required. The language is written against the OpenGL 1.2 |
| specification. |
| |
| Overview |
| |
| These functions behave identically to the standard OpenGL 1.1 functions |
| glDrawArrays() and glDrawElements() except they handle multiple lists of |
| vertices in one call. Their main purpose is to allow one function call |
| to render more than one primitive such as triangle strip, triangle fan, |
| etc. |
| |
| New Procedures and Functions |
| |
| void glMultiDrawArraysEXT( GLenum mode, |
| const GLint *first, |
| const GLsizei *count, |
| GLsizei primcount) |
| Parameters |
| ---------- |
| mode Specifies what kind of primitives to |
| render. Symbolic constants GL_POINTS, |
| GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, |
| GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, |
| GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, |
| and GL_POLYGON are accepted. |
| |
| first Points to an array of starting indices in |
| the enabled arrays. |
| |
| count Points to an array of the number of indices |
| to be rendered. |
| |
| primcount Specifies the size of first and count |
| |
| |
| void glMultiDrawElementsEXT( GLenum mode, |
| GLsizei *count, |
| GLenum type, |
| const void * const *indices, |
| GLsizei primcount) |
| |
| Parameters |
| ---------- |
| mode Specifies what kind of primitives to render. |
| Symbolic constants GL_POINTS, GL_LINE_STRIP, |
| GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, |
| GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, |
| GL_QUADS, and GL_POLYGON are accepted. |
| |
| count Points to and array of the element counts |
| |
| type Specifies the type of the values in indices. |
| Must be one of GL_UNSIGNED_BYTE, |
| GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT. |
| |
| indices Specifies a pointer to the location where |
| the indices are stored. |
| |
| primcount Specifies the size of the count array |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) |
| |
| Section 2.8 Vertex Arrays: |
| |
| The command |
| |
| void glMultiDrawArraysEXT( GLenum mode, |
| const GLint* first, |
| const GLsizei *count, |
| GLsizei primcount) |
| |
| Behaves identically to DrawArrays except that a list of arrays is |
| specified instead. The number of lists is specified in the primcount |
| parameter. It has the same effect as: |
| |
| for(i=0; i<primcount; i++) { |
| if (*(count+i)>0) DrawArrays(mode, *(first+i), *(count+i)); |
| } |
| |
| The command |
| |
| void glMultiDrawElementsEXT( GLenum mode, |
| GLsizei *count, |
| GLenum type, |
| const void **indices, |
| GLsizei primcount) |
| |
| Behaves identically to DrawElements except that a list of arrays is |
| specified instead. The number of lists is specified in the primcount |
| parameter. It has the same effect as: |
| |
| for(i=0; i<primcount; i++) { |
| if (*(count+i)>0) DrawElements(mode, *(count+i), type, |
| *(indices+i)); |
| } |
| |
| Additions to Chapter 3 of the 1.2 Specification (Rasterization) |
| |
| None |
| |
| Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and |
| |
| None |
| |
| Additions to Chapter 5 of the 1.2 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.2 Specification (State and State Requests) |
| |
| None |
| |
| Additions to the GLX / WGL / AGL Specifications |
| |
| None |
| |
| GLX Protocol |
| |
| None |
| |
| Errors |
| |
| GL_INVALID_ENUM is generated if <mode> is not an accepted value. |
| |
| GL_VALUE is generated if <primcount> is negative. |
| |
| GL_INVALID_OPERATION is generated if glMultiDrawArraysEXT or |
| glMultiDrawElementsEXT is executed between the execution of glBegin |
| and the corresponding glEnd. |
| |
| New State |
| |
| None |
| |
| OpenGL ES interactions |
| This extension can also be implemented against OpenGL ES 1.x or |
| OpenGL ES 2.0. In those cases, remove references to glBegin, glEnd, |
| and to GL_QUAD_STRIP, GL_QUADS, and GL_POLYGON. |
| |
| |
| Revision History |
| |
| Version 5, 2013/09/08 (Jon Leech) - Changed GLvoid -> void |
| (Bug 10412). |
| Version 4, 2013/06/18 (Jon Leech) - Added 'const' to |
| MultiDrawElementsEXT, too, based on feedback from Mesa. |
| Version 3, 2010/08/06 - Added 'const' to MultiDrawArraysEXT pointer |
| arguments to match the core GL entry point. |
| 30/09/09 - Added fields from the new extension template and |
| interactions with OpenGL ES. |
| 6/24/99 - Added fields from the new extension template. |