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