glIndexPointer
Prev | GL | Next

## Name

glIndexPointer, glIndexPointerb, glIndexPointerd, glIndexPointerf, glIndexPointeri, glIndexPointers, glIndexPointerub — define an array of color indexes

## C Specification

`void `glIndexPointer`` | `(` | `GLenum `type`, GLsizei `stride`, const GLvoid *`pointer`);`

## Python Specification

``glIndexPointer`` | `(` | ``type`, `stride`, `pointer`) → `None``
``glIndexPointerb`` | `(` | ``pointer`[]) → `None``
``glIndexPointerd`` | `(` | ``pointer`[]) → `None``
``glIndexPointerf`` | `(` | ``pointer`[]) → `None``
``glIndexPointeri`` | `(` | ``pointer`[]) → `None``
``glIndexPointers`` | `(` | ``pointer`[]) → `None``
``glIndexPointerub`` | `(` | ``pointer`[]) → `None``

## Parameters

`type`
  Specifies the data type of each color index in the array. Symbolic constants `GL_UNSIGNED_BYTE`, `GL_SHORT`, `GL_INT`, `GL_FLOAT`, and `GL_DOUBLE` are accepted. The initial value is `GL_FLOAT`.
`stride`
  Specifies the byte offset between consecutive color indexes. If `stride` is 0 (the initial value), the color indexes are understood to be tightly packed in the array. The initial value is 0.
`pointer`
  Specifies a pointer to the first index in the array. The initial value is 0.

## Description

`glIndexPointer` specifies the location and data of an array of color indexes to use when rendering. `type` specifies the data type of each color index and `stride` gives the byte stride from one color index to the next allowing vertexes and attributes to be packed into a single array or stored in separate arrays. (Single-array storage may be more efficient on some implementations; see glInterleavedArrays.)

`type`, `stride`, and `pointer` are saved as client-side state.

The color index array is initially disabled. To enable and disable the array, call `glEnableClientState` and `glDisableClientState` with the argument `GL_INDEX_ARRAY`. If enabled, the color index array is used when `glDrawArrays`, `glDrawElements` or `glArrayElement` is called.

Use `glDrawArrays` to construct a sequence of primitives (all of the same type) from prespecified vertex and vertex attribute arrays. Use `glArrayElement` to specify primitives by indexing vertexes and vertex attributes and `glDrawElements` to construct a sequence of primitives by indexing vertexes and vertex attributes.

## Notes

`glIndexPointer` is available only if the GL version is 1.1 or greater.

The color index array is initially disabled, and it isn't accessed when `glArrayElement`, `glDrawElements`, or `glDrawArrays` is called.

Execution of `glIndexPointer` is not allowed between `glBegin` and the corresponding `glEnd`, but an error may or may not be generated. If an error is not generated, the operation is undefined.

`glIndexPointer` is typically implemented on the client side.

Since the color index array parameters are client-side state, they are not saved or restored by `glPushAttrib` and `glPopAttrib`. Use `glPushClientAttrib` and `glPopClientAttrib` instead.

## Errors

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

`GL_INVALID_VALUE` is generated if `stride` is negative.

## Associated Gets

`glIsEnabled` with argument `GL_INDEX_ARRAY`

`glGet` with argument `GL_INDEX_ARRAY_TYPE`

`glGet` with argument `GL_INDEX_ARRAY_STRIDE`

`glGetPointerv` with argument `GL_INDEX_ARRAY_POINTER`

## See Also

glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnable, glGetPointerv, glInterleavedArrays, glNormalPointer, glPushClientAttrib, glTexCoordPointer, glVertexPointer

Prev | Up | Next
glIndexMask | Home | glInitNames