'''OpenGL extension IBM.vertex_array_lists This module customises the behaviour of the OpenGL.raw.GL.IBM.vertex_array_lists to provide a more Python-friendly API Overview (from the spec) This extension introduces seven (7) new functions that set the vertex array pointers. However, instead of a single pointer, these functions provide a list of array pointers that can be used by the EXT_multi_draw_arrays and IBM_multimode_draw_arrays extension functions to draw from multiple of vertex arrays. The first primitive will use the first array in the list, the second primitive will use the second array in the list, and so forth. If a glDrawArray, DrawElements, or DrawRangeElements function is used, then only the first vertex array in the list is used. When a vertex array list is specified, only the list pointer is kept by the underlying OpenGL function. Therefore, the list must be staticly defined for the entire duration of its usage, much in the same manner as the vertex arrays themselves. Also note that the list function can therefore also be used to change array pointers without making a OpenGL API function call. A value of zero (0) can be used to force all primitives of a multi-vertex array to use only the first vertex array in the list. The parameter of the list pointer functions differs from that of the non-list vertex array pointer functions in that 1) both negative and positive strides are accepted thusly allowing vertex lists to be rendered in reverse order; 2) a of zero (0) results in no stride and can be used to specify a single vertex attribute for each vertex of the primitive. These new functions are a superset of the standard OpenGL 1.2 vertex array (non-list) pointer functions and share common state. Therefore, the list pointer and non-list pointer functions can be used interchangably. New queries are provided by this extension so that ZAPdb can be extended to query the list pointer state whenever a vertex array function is traced. The pointer returned by a query of *_ARRAY_POINTER returns the first entry in the array list. The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/vertex_array_lists.txt ''' from OpenGL import platform, constant, arrays from OpenGL import extensions, wrapper import ctypes from OpenGL.raw.GL import _types, _glgets from OpenGL.raw.GL.IBM.vertex_array_lists import * from OpenGL.raw.GL.IBM.vertex_array_lists import _EXTENSION_NAME def glInitVertexArrayListsIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( _EXTENSION_NAME ) # INPUT glColorPointerListIBM.pointer size not checked against 'size,type,stride' glColorPointerListIBM=wrapper.wrapper(glColorPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glSecondaryColorPointerListIBM.pointer size not checked against 'size,type,stride' glSecondaryColorPointerListIBM=wrapper.wrapper(glSecondaryColorPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glEdgeFlagPointerListIBM.pointer size not checked against 'stride' glEdgeFlagPointerListIBM=wrapper.wrapper(glEdgeFlagPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glFogCoordPointerListIBM.pointer size not checked against 'type,stride' glFogCoordPointerListIBM=wrapper.wrapper(glFogCoordPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glIndexPointerListIBM.pointer size not checked against 'type,stride' glIndexPointerListIBM=wrapper.wrapper(glIndexPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glNormalPointerListIBM.pointer size not checked against 'type,stride' glNormalPointerListIBM=wrapper.wrapper(glNormalPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glTexCoordPointerListIBM.pointer size not checked against 'size,type,stride' glTexCoordPointerListIBM=wrapper.wrapper(glTexCoordPointerListIBM).setInputArraySize( 'pointer', None ) # INPUT glVertexPointerListIBM.pointer size not checked against 'size,type,stride' glVertexPointerListIBM=wrapper.wrapper(glVertexPointerListIBM).setInputArraySize( 'pointer', None ) ### END AUTOGENERATED SECTION