• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2
3Name
4
5    IBM_vertex_array_lists
6
7Name Strings
8
9    GL_IBM_vertex_array_lists
10
11Version
12
13    IBM Date: 1999/06/02 13:18:29  Revision: 1.8
14
15Number
16
17    201
18
19Dependencies
20
21    OpenGL 1.1 is required. The language is written against the OpenGL 1.2
22    specification.
23
24    This extension affects/interacts with the EXT_multi_draw_arrays and
25    IBM_multimode_draw_arrays extensions.
26
27    Support for the FogCoordPointerListIBM function is only required if
28    the EXT_fog_coord extension is supported.
29
30    Support for the SecondaryColorPointerListIBM function is only required if
31    the EXT_secondary_color extension is supported.
32
33Overview
34
35    This extension introduces seven (7) new functions that set the
36    vertex array pointers. However, instead of a single pointer, these
37    functions provide a list of array pointers that can be used by the
38    EXT_multi_draw_arrays and IBM_multimode_draw_arrays extension
39    functions to draw from multiple of vertex arrays. The first
40    primitive will use the first array in the list, the second primitive
41    will use the second array in the list, and so forth. If a glDrawArray,
42    DrawElements, or DrawRangeElements function is used, then
43    only the first vertex array in the list is used.
44
45    When a vertex array list is specified, only the list pointer
46    is kept by the underlying OpenGL function. Therefore, the list
47    must be staticly defined for the entire duration of its usage,
48    much in the same manner as the vertex arrays themselves. Also
49    note that the list function can therefore also be used to change
50    array pointers without making a OpenGL API function call.
51
52    A <ptrstride> value of zero (0) can be used to force all primitives
53    of a multi-vertex array to use only the first vertex array in
54    the list.
55
56    The <stride> parameter of the list pointer functions differs from
57    that of the non-list vertex array pointer functions in that 1)
58    both negative and positive strides are accepted thusly allowing
59    vertex lists to be rendered in reverse order; 2) a <stride> of
60    zero (0) results in no stride and can be used to specify a single
61    vertex attribute for each vertex of the primitive.
62
63    These new functions are a superset of the standard OpenGL 1.2 vertex
64    array (non-list) pointer functions and share common state. Therefore,
65    the list pointer and non-list pointer functions can be used
66    interchangably.
67
68    New queries are provided by this extension so that ZAPdb can be extended
69    to query the list pointer state whenever a vertex array function
70    is traced. The pointer returned by a query of *_ARRAY_POINTER returns
71    the first entry in the array list.
72
73
74Issues
75
76New Procedures and Functions
77
78    void ColorPointerListIBM (GLint size,
79		 	      GLenum type,
80			      GLint stride,
81			      const void **pointer,
82			      GLint ptrstride)
83
84    void SecondaryColorPointerListIBM (GLint size,
85                                       GLenum type,
86			               GLint stride,
87			               const void **pointer,
88			               GLint ptrstride)
89
90    void EdgeFlagPointerListIBM (GLint stride,
91				 const GLboolean **pointer,
92				 GLint ptrstride);
93
94    void FogCoordPointerListIBM (GLenum type,
95				 GLint stride,
96				 const void **pointer,
97				 GLint ptrstride)
98
99    void IndexPointerListIBM (GLenum type,
100			      GLint stride,
101			      const void **pointer,
102			      GLint ptrstride);
103
104    void NormalPointerListIBM (GLenum type,
105			       GLint stride,
106			       const void **pointer,
107			       GLint ptrstride);
108
109    void TexCoordPointerListIBM (GLint size,
110				 GLenum type,
111				 GLint stride,
112				 const void **pointer,
113				 GLint ptrstride);
114
115    void VertexPointerListIBM (GLint size,
116			       GLenum type,
117			       GLint stride,
118			       const void **pointer,
119			       GLint ptrstride);
120
121
122    Parameters
123    ----------
124        size            Specifies the number of values per vertex that
125			are stored in the array.
126
127	type            Specifies the data type of the values stored in
128			the array.
129
130        stride		Specifies the number of basic elements (for most
131			systems this is bytes) between array values.
132
133	pointer		Pointer to a list of array pointers.
134
135	ptrstride	Specifies the number of basic elements (for most
136			systems this is bytes) bewteen array pointers
137			in the pointer lists pointed to by <pointer>.
138
139	Valid <size> and <type> parameters for each of the functions is
140        the same as the non-list vertex array counterparts.
141
142				   <size>	<type>
143                                   ------       ------------------------
144	ColorPointerListIBM	    3,4		GLshort, GLint, GLfloat,
145						GLdouble
146        EdgeFlagPointerListIBM      -		-
147	FogCoordPointerListIBM      1		GLfloat, GLdouble
148	IndexPointerListIBM	    -		GLubyte, GLshort, GLint,
149	 					GLfloat, GLdouble
150	NormalPointerListIBM        -           GLbyte, GLshort, GLint,
151						GLfloat, GLdouble
152	SecondaryColorPointerListIBM 3,4	GLshort, GLint, GLfloat,
153						GLdouble
154        TexCoordPointerListIBM      1,2,3,4	GLshort, GLint, GLfloat,
155						GLdouble
156	VertexPointerListIBM	    2,3,4	GLshort, GLint, GLfloat,
157						GLdouble
158
159New Tokens
160
161  Accepted by the <pname> parameter of GetPointerv:
162
163  VERTEX_ARRAY_LIST_IBM			103070
164  NORMAL_ARRAY_LIST_IBM			103071
165  COLOR_ARRAY_LIST_IBM			103072
166  INDEX_ARRAY_LIST_IBM			103073
167  TEXTURE_COORD_ARRAY_LIST_IBM		103074
168  EDGE_FLAG_ARRAY_LIST_IBM		103075
169  FOG_COORDINATE_ARRAY_LIST_IBM		103076
170  SECONDARY_COLOR_ARRAY_LIST_IBM	103077
171
172  Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
173  GetFloatv, and GetDoublev:
174
175  VERTEX_ARRAY_LIST_STRIDE_IBM		103080
176  NORMAL_ARRAY_LIST_STRIDE_IBM		103081
177  COLOR_ARRAY_LIST_STRIDE_IBM		103082
178  INDEX_ARRAY_LIST_STRIDE_IBM		103083
179  TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM	103084
180  EDGE_FLAG_ARRAY_LIST_STRIDE_IBM	103085
181  FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM	103086
182  SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM	103087
183
184
185Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
186
187    Section 2.8 Vertex Arrays:
188
189	??? yet to be written ???
190
191Additions to Chapter 3 of the 1.2 Specification (Rasterization)
192
193    None.
194
195Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and
196
197    None.
198
199Additions to Chapter 5 of the 1.2 Specification (Special Functions)
200
201    None.
202
203Additions to Chapter 6 of the 1.2 Specification (State and State Requests)
204
205    Additional table entries for Table 6.6. Vertex Array Data
206
207                                            Get          Initial
208       Get Value                       Type Cmnd         Value     Description                   Sec  Attribute
209    ---------------------------------  ---- -----------  ------- ------------------------------  --- -----------
210    VERTEX_ARRAY_LIST_IBM	        Y   GetPointerv  &NULL   Ptr to list of vertex arrays    2.8 vertex-array
211    NORMAL_ARRAY_LIST_IBM	        Y   GetPointerv  &NULL   Ptr to list of normal arrays    2.8 vertex-array
212    COLOR_ARRAY_LIST_IBM	        Y   GetPointerv  &NULL   Ptr to list of color arrays     2.8 vertex-array
213    INDEX_ARRAY_LIST_IBM                Y   GetPointerv  &NULL   Ptr to list of index arrays     2.8 vertex-array
214    TEXTURE_COORD_ARRAY_LIST_IBM        Y   GetPointerv  &NULL   Ptr to list of texture arrays   2.8 vertex-array
215    EDGE_FLAG_ARRAY_LIST_IBM            Y   GetPointerv  &NULL   Ptr to list of edgeflag arrays  2.8 vertex-array
216    FOG_COORD_ARRAY_LIST_IBM            Y   GetPointerv  &NULL   Ptr to list of fog arrays       2.8 vertex-array
217    SECONDARY_COLOR_ARRAY_LIST_IBM      Y   GetPointerv  &NULL   Ptr to list of secondary arrays 2.8 vertex-array
218    VERTEX_ARRAY_LIST_STRIDE_IBM        Z   GetIntegetv    0     Vertex list ptr stride          2.8 vertex-array
219    NORMAL_ARRAY_LIST_STRIDE_IBM        Z   GetIntegetv    0     Normal list ptr stride          2.8 vertex-array
220    COLOR_ARRAY_LIST_STRIDE_IBM	        Z   GetIntegetv    0     Color list ptr stride           2.8 vertex-array
221    INDEX_ARRAY_LIST_STRIDE_IBM	        Z   GetIntegetv    0     Index list ptr stride           2.8 vertex-array
222    TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM	Z   GetIntegetv    0     Texture coord list ptr stride   2.8 vertex-array
223    EDGE_FLAG_ARRAY_LIST_STRIDE_IBM	Z   GetIntegetv    0     Edgeflag list ptr stride        2.8 vertex-array
224    FOG_COORD_ARRAY_LIST_STRIDE_IBM	Z   GetIntegetv    0     Fog coord list ptr stride       2.8 vertex-array
225    SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM Z GetIntegetv    0     Secondary color list ptr stride 2.8 vertex-array
226
227    Notes:
228    1) The initial list pointer values point to a NULL pointer.
229
230
231Additions to the GLX Specification
232
233    None.
234
235GLX Protocol
236
237    None.
238
239Errors
240
241    GL_INVALID_VALUE is generated if <size> is not an accepted value.
242
243    GL_INVALID_ENUM is generated if <type> is not an accepted value.
244
245New State
246
247    None.
248
249
250