The glInterleavedArrays function simultaneously specifies and enables several interleaved arrays in a larger aggregate array.
void glInterleavedArrays(
GLenum format,
GLsizei stride,
const GLvoid * pointer
);
With the glInterleavedArrays function you can simultaneously specify and enable several interleaved color, normal, texture, and vertex arrays whose elements are part of a larger aggregate array element. For some memory architectures this is more efficient than specifying the arrays separately.
If the stride parameter is zero then the aggregate array elements are stored consecutively; otherwise stride bytes occur between aggregate array elements.
The format parameter serves as a "key" that describes how to extract individual arrays from the aggregate array:
If you call glInterleavedArrays while compiling a display list, it is not compiled into the list but is executed immediately.
You cannot include calls to glInterleavedArrays in glDisableClientState between calls to glBegin and the corresponding call to glEnd.
Note The glInterleavedArrays function is only available in OpenGL version 1.1 or later.
The glInterleavedArrays function is implemented on the client side with no protocol. Because the vertex array parameters are client-side state, they are not saved or restored by glPushAttrib and glPopAttrib. Use glPushClientAttrib and glPopClientAttrib instead.
The following are the error codes generated and their conditions.
Error Code | Condition |
---|---|
GL_INVALID_ENUM | format was not an accepted value. |
GL_INVALID_VALUE | stride was a negative value. |
GL_INVALID_OPERATION | glInterleavedArrays was called between a call to glBegin and the corresponding call to glEnd. |
glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnableClientState, glGetPointerv, glIndexPointer, glNormalPointer, glPushAttrib, glPushClientAttrib, glTexCoordPointer, glVertexPointer