glDrawRangeElements
Prev | GL | Next

## Name

glDrawRangeElements — render primitives from array data

## C Specification

`void `glDrawRangeElements`` | `(` | `GLenum `mode`, GLuint `start`, GLuint `end`, GLsizei `count`, GLenum `type`, const GLvoid *`indices`);`

## Python Specification

``glDrawRangeElements`` | `(` | ``mode`, `start`, `end`, `count`, `type`, `indices`) → `None``

## 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.
`start`
  Specifies the minimum array index contained in `indices`.
`end`
  Specifies the maximum array index contained in `indices`.
`count`
  Specifies the number of elements to be rendered.
`type`
  Specifies the type of the values in `count`. 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.

## Description

`glDrawRangeElements` is a restricted form of `glDrawElements`. `mode`, `start`, `end`, and `count` match the corresponding arguments to `glDrawElements`, with the additional constraint that all values in the arrays `count` must lie between `start` and `end`, inclusive.

Implementations denote recommended maximum amounts of vertex and

index data, which may be queried by calling `glGet` with argument `GL_MAX_ELEMENTS_VERTICES` and `GL_MAX_ELEMENTS_INDICES`. If end - start + 1 is greater than the value of `GL_MAX_ELEMENTS_VERTICES`, or if `count` is greater than the value of `GL_MAX_ELEMENTS_INDICES`, then the call may operate at reduced performance. There is no requirement that all vertices in the range [`start`,`end`] be referenced. However, the implementation may partially process unused vertices, reducing performance from what could be achieved with an optimal index set.

When `glDrawRangeElements` is called, it uses `start` sequential elements from an enabled array, starting at `count` to construct a sequence of geometric primitives. `mode` specifies what kind of primitives are constructed, and how the array elements construct these primitives. If more than one array is enabled, each is used. If `GL_VERTEX_ARRAY` is not enabled, no geometric primitives are constructed.

Vertex attributes that are modified by `glDrawRangeElements` have an unspecified value after `glDrawRangeElements` returns. For example, if `GL_COLOR_ARRAY` is enabled, the value of the current color is undefined after `glDrawRangeElements` executes. Attributes that aren't modified maintain their previous values.

## Notes

`glDrawRangeElements` is available only if the GL version is 1.2 or greater.

`glDrawRangeElements` is included in display lists. If `glDrawRangeElements` is entered into a display list, the necessary array data (determined by the array pointers and enables) is also entered into the display list. Because the array pointers and enables are client-side state, their values affect display lists when the lists are created, not when the lists are executed.

## Errors

It is an error for indices to lie outside the range [`start`,`end`], but implementations may not check for this situation. Such indices cause implementation-dependent behavior.

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

`GL_INVALID_VALUE` is generated if `count` is negative.

`GL_INVALID_VALUE` is generated if `end` < `start`.

`GL_INVALID_OPERATION` is generated if `glDrawRangeElements` is executed between the execution of `glBegin` and the corresponding `glEnd`.

## Associated Gets

`glGet` with argument `GL_MAX_ELEMENTS_VERTICES`

`glGet` with argument `GL_MAX_ELEMENTS_INDICES`

## See Also

glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glGetPointerv, glIndexPointer, glInterleavedArrays, glNormalPointer, glTexCoordPointer, glVertexPointer

Prev | Up | Next
glDrawPixels | Home | glEdgeFlag