Name IBM_vertex_array_lists Name Strings GL_IBM_vertex_array_lists Version IBM Date: 1999/06/02 13:18:29 Revision: 1.8 Number 201 Dependencies OpenGL 1.1 is required. The language is written against the OpenGL 1.2 specification. This extension affects/interacts with the EXT_multi_draw_arrays and IBM_multimode_draw_arrays extensions. Support for the FogCoordPointerListIBM function is only required if the EXT_fog_coord extension is supported. Support for the SecondaryColorPointerListIBM function is only required if the EXT_secondary_color extension is supported. Overview 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. Issues New Procedures and Functions void ColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride) void SecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride) void EdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride); void FogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride) void IndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); void NormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); void TexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); void VertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); Parameters ---------- size Specifies the number of values per vertex that are stored in the array. type Specifies the data type of the values stored in the array. stride Specifies the number of basic elements (for most systems this is bytes) between array values. pointer Pointer to a list of array pointers. ptrstride Specifies the number of basic elements (for most systems this is bytes) bewteen array pointers in the pointer lists pointed to by . Valid and parameters for each of the functions is the same as the non-list vertex array counterparts. ------ ------------------------ ColorPointerListIBM 3,4 GLshort, GLint, GLfloat, GLdouble EdgeFlagPointerListIBM - - FogCoordPointerListIBM 1 GLfloat, GLdouble IndexPointerListIBM - GLubyte, GLshort, GLint, GLfloat, GLdouble NormalPointerListIBM - GLbyte, GLshort, GLint, GLfloat, GLdouble SecondaryColorPointerListIBM 3,4 GLshort, GLint, GLfloat, GLdouble TexCoordPointerListIBM 1,2,3,4 GLshort, GLint, GLfloat, GLdouble VertexPointerListIBM 2,3,4 GLshort, GLint, GLfloat, GLdouble New Tokens Accepted by the parameter of GetPointerv: VERTEX_ARRAY_LIST_IBM 103070 NORMAL_ARRAY_LIST_IBM 103071 COLOR_ARRAY_LIST_IBM 103072 INDEX_ARRAY_LIST_IBM 103073 TEXTURE_COORD_ARRAY_LIST_IBM 103074 EDGE_FLAG_ARRAY_LIST_IBM 103075 FOG_COORDINATE_ARRAY_LIST_IBM 103076 SECONDARY_COLOR_ARRAY_LIST_IBM 103077 Accepted by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: VERTEX_ARRAY_LIST_STRIDE_IBM 103080 NORMAL_ARRAY_LIST_STRIDE_IBM 103081 COLOR_ARRAY_LIST_STRIDE_IBM 103082 INDEX_ARRAY_LIST_STRIDE_IBM 103083 TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) Section 2.8 Vertex Arrays: ??? yet to be written ??? Additions to Chapter 3 of the 1.2 Specification (Rasterization) None. Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and None. Additions to Chapter 5 of the 1.2 Specification (Special Functions) None. Additions to Chapter 6 of the 1.2 Specification (State and State Requests) Additional table entries for Table 6.6. Vertex Array Data Get Initial Get Value Type Cmnd Value Description Sec Attribute --------------------------------- ---- ----------- ------- ------------------------------ --- ----------- VERTEX_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of vertex arrays 2.8 vertex-array NORMAL_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of normal arrays 2.8 vertex-array COLOR_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of color arrays 2.8 vertex-array INDEX_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of index arrays 2.8 vertex-array TEXTURE_COORD_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of texture arrays 2.8 vertex-array EDGE_FLAG_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of edgeflag arrays 2.8 vertex-array FOG_COORD_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of fog arrays 2.8 vertex-array SECONDARY_COLOR_ARRAY_LIST_IBM Y GetPointerv &NULL Ptr to list of secondary arrays 2.8 vertex-array VERTEX_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Vertex list ptr stride 2.8 vertex-array NORMAL_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Normal list ptr stride 2.8 vertex-array COLOR_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Color list ptr stride 2.8 vertex-array INDEX_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Index list ptr stride 2.8 vertex-array TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Texture coord list ptr stride 2.8 vertex-array EDGE_FLAG_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Edgeflag list ptr stride 2.8 vertex-array FOG_COORD_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Fog coord list ptr stride 2.8 vertex-array SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM Z GetIntegetv 0 Secondary color list ptr stride 2.8 vertex-array Notes: 1) The initial list pointer values point to a NULL pointer. Additions to the GLX Specification None. GLX Protocol None. Errors GL_INVALID_VALUE is generated if is not an accepted value. GL_INVALID_ENUM is generated if is not an accepted value. New State None.