1991-2006 Silicon Graphics, Inc.

glDrawElements

3G

glDrawElements

render primitives from array data

# C Specification

                    void glDrawElements
                    GLenum mode
                    GLsizei count
                    GLenum type
                    const GLvoid * indices

## 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`, and `GL_TRIANGLES` are accepted.

`count`

- Specifies the number of elements to be rendered.

`type`

- Specifies the type of the values in `indices`. Must be `GL_UNSIGNED_BYTE` or `GL_UNSIGNED_SHORT`.

`indices`

- Specifies a pointer to the location where the indices are stored.

## Description

`glDrawElements` specifies multiple geometric primitives with very few subroutine calls. Instead of calling a GL function to pass each vertex attribute, you can use

glVertexAttribPointer

to prespecify separate arrays of vertex attributes and use them to construct a sequence of primitives with a single call to `glDrawElements`.

When `glDrawElements` is called, it uses `count` sequential elements from an enabled array, starting at `indices` 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.

To enable and disable a generic vertex attribute array, call

glEnableVertexAttribArray

and

glDisableVertexAttribArray

.

## Notes

If the current program object, as set by

glUseProgram

, is invalid, rendering results are undefined. However, no error is generated for this case.

## Errors

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

`GL_INVALID_ENUM` is generated if `type` is not `GL_UNSIGNED_BYTE` or `GL_UNSIGNED_SHORT`.

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

`GL_INVALID_FRAMEBUFFER_OPERATION` is generated if the currently bound framebuffer is not framebuffer complete (i.e. the return value from

glCheckFramebufferStatus

is not `GL_FRAMEBUFFER_COMPLETE`).

## See Also

glCheckFramebufferStatus

,

glDisableVertexAttribArray

,

glDrawArrays

,

glEnableVertexAttribArray

,

glUseProgram

,

glVertexAttribPointer

## 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/.