GLAPI/glMultiDrawElements: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m Bot: Adding better formatting.
m Bot: Adding better formatting.
Line 11: Line 11:


; mode
; mode
: Specifies what kind of primitives to render. Symbolic constants {{code|GL_POINTS}}, {{code|GL_LINE_STRIP}}, {{code|GL_LINE_LOOP}}, {{code|GL_LINES}}, {{code|GL_LINE_STRIP_ADJACENCY}}, {{code|GL_LINES_ADJACENCY}}, {{code|GL_TRIANGLE_STRIP}}, {{code|GL_TRIANGLE_FAN}}, {{code|GL_TRIANGLES}}, {{code|GL_TRIANGLE_STRIP_ADJACENCY}}, {{code|GL_TRIANGLES_ADJACENCY}} and {{code|GL_PATCHES}} are accepted.
: Specifies what kind of primitives to render. Symbolic constants {{enum|GL_POINTS}}, {{enum|GL_LINE_STRIP}}, {{enum|GL_LINE_LOOP}}, {{enum|GL_LINES}}, {{enum|GL_LINE_STRIP_ADJACENCY}}, {{enum|GL_LINES_ADJACENCY}}, {{enum|GL_TRIANGLE_STRIP}}, {{enum|GL_TRIANGLE_FAN}}, {{enum|GL_TRIANGLES}}, {{enum|GL_TRIANGLE_STRIP_ADJACENCY}}, {{enum|GL_TRIANGLES_ADJACENCY}} and {{enum|GL_PATCHES}} are accepted.
; count
; count
: Points to an array of the elements counts.
: Points to an array of the elements counts.
; type
; type
: Specifies the type of the values in {{param|indices}}. Must be one of {{code|GL_UNSIGNED_BYTE}}, {{code|GL_UNSIGNED_SHORT}}, or {{code|GL_UNSIGNED_INT}}.
: Specifies the type of the values in {{param|indices}}. Must be one of {{enum|GL_UNSIGNED_BYTE}}, {{enum|GL_UNSIGNED_SHORT}}, or {{enum|GL_UNSIGNED_INT}}.
; indices
; indices
: Specifies a pointer to the location where the indices are stored.
: Specifies a pointer to the location where the indices are stored.
Line 31: Line 31:
== Notes ==
== Notes ==


{{code|GL_LINE_STRIP_ADJACENCY}}, {{code|GL_LINES_ADJACENCY}}, {{code|GL_TRIANGLE_STRIP_ADJACENCY}} and {{code|GL_TRIANGLES_ADJACENCY}} are available only if the GL version is 3.2 or greater.
{{enum|GL_LINE_STRIP_ADJACENCY}}, {{enum|GL_LINES_ADJACENCY}}, {{enum|GL_TRIANGLE_STRIP_ADJACENCY}} and {{enum|GL_TRIANGLES_ADJACENCY}} are available only if the GL version is 3.2 or greater.


== Errors ==
== Errors ==


{{code|GL_INVALID_ENUM}} is generated if {{param|mode}} is not an accepted value.
{{enum|GL_INVALID_ENUM}} is generated if {{param|mode}} is not an accepted value.


{{code|GL_INVALID_VALUE}} is generated if {{param|primcount}} is negative.
{{enum|GL_INVALID_VALUE}} is generated if {{param|primcount}} is negative.


{{code|GL_INVALID_OPERATION}} is generated if a non-zero buffer object name is bound to an enabled array or the element array and the buffer object's data store is currently mapped.
{{enum|GL_INVALID_OPERATION}} is generated if a non-zero buffer object name is bound to an enabled array or the element array and the buffer object's data store is currently mapped.


== See Also ==
== See Also ==

Revision as of 17:26, 29 April 2012

glMultiDrawElements
Core in version 4.6
Core since version 1.4

glMultiDrawElements: render multiple sets of primitives by specifying indices of array data elements

Function Definition

 void glMultiDrawElements(GLenum mode​, const GLsizei * count​, GLenum type​, const GLvoid ** indices​, GLsizei primcount​);
mode
Specifies what kind of primitives to render. Symbolic constants GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_LINE_STRIP_ADJACENCY, GL_LINES_ADJACENCY, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_TRIANGLE_STRIP_ADJACENCY, GL_TRIANGLES_ADJACENCY and GL_PATCHES are accepted.
count
Points to an array of the elements 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.

Description

glMultiDrawElements specifies multiple sets of geometric primitives with very few subroutine calls. Instead of calling a GL function to pass each individual vertex, normal, texture coordinate, edge flag, or color, you can prespecify separate arrays of vertices, normals, and so on, and use them to construct a sequence of primitives with a single call to glMultiDrawElements.

glMultiDrawElements is identical in operation to glDrawElements except that primcount​ separate lists of elements are specified.

Vertex attributes that are modified by glMultiDrawElements have an unspecified value after glMultiDrawElements returns. Attributes that aren't modified maintain their previous values.

Notes

GL_LINE_STRIP_ADJACENCY, GL_LINES_ADJACENCY, GL_TRIANGLE_STRIP_ADJACENCY and GL_TRIANGLES_ADJACENCY are available only if the GL version is 3.2 or greater.

Errors

GL_INVALID_ENUM is generated if mode​ is not an accepted value.

GL_INVALID_VALUE is generated if primcount​ is negative.

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to an enabled array or the element array and the buffer object's data store is currently mapped.

See Also

glDrawArrays, glDrawRangeElements

Copyright

Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.