blob: 24c43d1e0ee71900cbf9e464ae0259437d3ba293 [file] [log] [blame]
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 <ptrstride> 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 <stride> 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 <stride> 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 <pointer>.
Valid <size> and <type> parameters for each of the functions is
the same as the non-list vertex array counterparts.
<size> <type>
------ ------------------------
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 <pname> 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 <pname> 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 <size> is not an accepted value.
GL_INVALID_ENUM is generated if <type> is not an accepted value.
New State
None.