gl.ArrayElement(i)
gl.ArrayElement()
commands are used within gl.Begin() / gl.End() pairs to
specify vertex and attribute data for point, line, and polygon primitives. If #GL_VERTEX_ARRAY
is enabled
when gl.ArrayElement()
is called, a single vertex is drawn, using vertex and attribute data taken from location
i
of the enabled arrays. If #GL_VERTEX_ARRAY
is not enabled, no drawing occurs but the attributes corresponding
to the enabled arrays are modified.
Use gl.ArrayElement()
to construct primitives by indexing vertex data, rather than by streaming through arrays
of data in first-to-last order. Because each call specifies only a single vertex, it is possible to explicitly
specify per-primitive attributes such as a single normal for each triangle.
Changes made to array data between the execution of gl.Begin() and the corresponding execution
of gl.End() may affect calls to gl.ArrayElement()
that are made within the same gl.Begin() / gl.End()
period in nonsequential ways. That is, a call to gl.ArrayElement()
that precedes a change to array data may access
the changed data, and a call that follows a change to array data may access original data.
gl.ArrayElement()
is included in display lists. If gl.ArrayElement()
is entered into a display list, the necessary
array data (determined by the array pointers and enables) is also entered into the display list. Because the array
pointers and enables are client-side state, their values affect display lists when the lists are created, not when
the lists are executed.
Please consult an OpenGL reference manual for more information.
#GL_INVALID_VALUE
may be generated if i
is negative.
#GL_INVALID_OPERATION
is generated if a non-zero buffer object name is bound to an enabled array and the buffer object's data store is currently mapped.