# GLAPI/glDrawElementsInstancedBaseVertexBaseInstance

Core in version 4.3 4.2 ARB_base_instance

glDrawElementsInstancedBaseVertexBaseInstance: render multiple instances of a set of primitives from array data with a per-element offset

## Function Definition

 void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode​, GLsizei count​, GLenum type​, GLvoid *indices​, GLsizei primcount​, GLint basevertex​, GLuint baseinstance​);

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.
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.
primcount
Specifies the number of instances of the indexed geometry that should be drawn.
basevertex
Specifies a constant that should be added to each element of indices​ when chosing elements from the enabled vertex arrays.
baseinstance
Specifies the base instance for use in fetching instanced vertex attributes.

## Description

glDrawElementsInstancedBaseVertexBaseInstance behaves identically to except that 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. The basevertex​ has no effect on the shader-visible value of gl_VertexID​.

Specific vertex attributes may be classified as instanced through the use of . Instanced vertex attributes supply per-instance vertex data to the vertex shader. The index of the vertex fetched from the enabled instanced vertex attribute arrays is calculated as $\left \lfloor \frac{gl\_InstanceID}{divisor} + baseInstance \right \rfloor$. Note that baseinstance​ does not affect the shader-visible value of gl_InstanceID​.

## Notes

glDrawElementsInstancedBaseVertexBaseInstance is available only if the GL version is 4.2 or greater.

## Errors

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

GL_INVALID_VALUE​ is generated if count​ or primcount​ is negative.

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.