Light | Dark

# docs.GL

OpenGL 4
OpenGL 3

# glDrawRangeElementsBaseVertex

## Name

glDrawRangeElementsBaseVertex — render primitives from array data with a per-element offset

## C Specification

`void glDrawRangeElementsBaseVertex(` | GLenum mode,
| GLuint start,
| GLuint end,
| GLsizei count,
| GLenum type,
| GLvoid *indices,
| GLint basevertex`)`;

## 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_LINES_ADJACENCY`, `GL_LINE_STRIP_ADJACENCY`, `GL_TRIANGLES_ADJACENCY`, `GL_TRIANGLE_STRIP_ADJACENCY` and `GL_PATCHES` 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 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.

`basevertex`

  Specifies a constant that should be added to each element of `indices` when chosing elements from the enabled vertex arrays.

## Description

`glDrawRangeElementsBaseVertex` is a restricted form of glDrawElementsBaseVertex. `mode`, `start`, `end`, `count` and `basevertex` match the corresponding arguments to glDrawElementsBaseVertex, with the additional constraint that all values in the array `indices` must lie between `start` and `end`, inclusive, prior to adding `basevertex`. Index values lying outside the range [`start`, `end`] are treated in the same way as glDrawElementsBaseVertex. The ith element transferred by the corresponding draw call will be taken from element `indices`[i] + `basevertex` of each enabled array. If the resulting value is larger than the maximum value representable by `type`, it is as if the calculation were upconverted to 32-bit unsigned integers (with wrapping on overflow conditions). The operation is undefined if the sum would be negative.

## Errors

`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 a geometry shader is active and `mode` is incompatible with the input primitive type of the geometry shader in the currently installed program object.

`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.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glDrawRangeElementsBaseVertex` | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glDrawElements, glDrawElementsBaseVertex, glDrawRangeElements, glDrawElementsInstanced, glDrawElementsInstancedBaseVertex

## Copyright

Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. https://opencontent.org/openpub/.

Think you can improve this page? Edit this page on GitHub.