1Name 2 3 EXT_vertex_array_set / GenName version 4 5Name Strings 6 7 GL_EXT_vertex_array_set 8 9Version 10 11 $Date: 1997/09/17 18:23:47 $ $Revision: 1.2 $ 12 13Number 14 15 ??? 16 17Dependencies 18 19 EXT_static_vertex_array 20 21Overview 22 23 This extension introduces named vertex array sets which encapsulate 24 vertex array state on the client side. The main purpose of these 25 sets is to keep pointers to static vertex data and provide a name 26 for different sets of static vertex data. The specification of 27 static vertex data is done through EXT_static_vertex_array extension. 28 29Issues 30 31 * Should we allow vertex array sets to be shared between 32 client side contexts? 33 34New Procedures and Functions 35 36 void GenArraySetsEXT(sizei n, 37 uint* arrayset); 38 39 void BindArraySetEXT(uint arrayset); 40 41 void DeleteArraySetsEXT(sizei n, 42 const uint* arrayset); 43 44 boolean IsArraySetEXT(uint arrayset); 45 46New Tokens 47 48 Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 49 GetFloatv, and GetDoublev: 50 51 ARRAY_SET_BINDING_EXT 52 53Additions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, 54 Rasterization, Per-Fragment Operations and the Frame Buffer) 55 56 None 57 58Additions to Chapter 5 of the 1.1 Specification (Special Functions) 59 60 A vertex array set is created by binding an unused name. This binding 61 is accomplished by calling BindArraySetEXT with arrayset set to 62 the name of the new vertex array set. 63 64 The state encapsulated by a vertex array set immediately after 65 it is first bound is quivalent to the default vertex array 66 state at GL initialization. Subsequent bindings of a vertex 67 array set have no effect on its encapsulated state unless changed 68 explicitly. 69 70 When an OpenGL context is created, there is set of default vertex 71 array state associated with the context. In order that the access to 72 this default state is not lost, this extension treats the default state 73 as if its name was zero. Unlike other vertex array sets, the zero 74 set cannot be deleted. 75 76 GenArraySetsEXT returns <n> vertex array set names in <arrayset>. 77 These names are chosen in an unspecified manner, the only condition being 78 that only names that were not in use immediately prior to the call to 79 GenArraySetsEXT are considered. Names returned by GenArraySetsEXT 80 are marked as used (so that they are not returned by subsequent calls to 81 GenArraySetsEXT), but they are associated with a vertex array set 82 only after they are first bound (just as if the name were unused). 83 84 Vertex array sets are deleted by calling DeleteArraySetsEXT with 85 <arrayset> pointing to a list of <n> names of array sets to be 86 deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt 87 on the sets to be deleted before deleting the <arrayset>. Once a 88 vertex array set is deleted, it has no contents, and its name is freed. 89 If a pointer set that is currently bound is deleted, the binding 90 reverts to zero. DeleteArraySetsEXT ignores names that do not 91 correspond to array sets, including zero. 92 93Additions to Chapter 6 of the 1.0 Specification (State and State Requests) 94 95 IsArraySetEXT returns TRUE if <arrayset> is the name of a valid 96 vertex array set. If <arrayset> is zero, or is a non-zero value 97 that is not the name of a vertex array set, or if an error condition 98 occurs, IsArraySetEXT returns FALSE. 99 100 The name of the currently bound vertex array set is returned in <params> 101 when GetIntegerv is called with <pname> set to ARRAY_SET_BINDING_EXT. 102 If no vertex array set is bound, zero is returned. 103 104 A vertex array set comprises of vertex array pointers, the size and 105 type information for each array, the corresponding enable flags and the 106 range of static data for each array. More explicitly, the state list 107 108 ARRAY_ELEMENT_LOCK_COUNT_EXT 109 VERTEX_ARRAY 110 VERTEX_ARRAY_SIZE 111 VERTEX_ARRAY_TYPE 112 VERTEX_ARRAY_STRIDE 113 VERTEX_ARRAY_POINTER 114 NORMAL_ARRAY 115 NORMAL_ARRAY_TYPE 116 NORMAL_ARRAY_STRIDE 117 NORMAL_ARRAY_POINTER 118 COLOR_ARRAY 119 COLOR_ARRAY_SIZE 120 COLOR_ARRAY_TYPE 121 COLOR_ARRAY_STRIDE 122 COLOR_ARRAY_POINTER 123 INDEX_ARRAY 124 INDEX_ARRAY_TYPE 125 INDEX_ARRAY_STRIDE 126 INDEX_ARRAY_POINTER 127 TEXTURE_COORD_ARRAY 128 TEXTURE_COORD_ARRAY_SIZE 129 TEXTURE_COORD_ARRAY_TYPE 130 TEXTURE_COORD_ARRAY_STRIDE 131 TEXTURE_COORD_ARRAY_POINTER 132 EDGE_FLAG_ARRAY 133 EDGE_FLAG_ARRAY_STRIDE 134 EDGE_FLAG_ARRAY_POINTER 135 136 composes a single vertex array set. 137 138 When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, 139 the array pointers, types, size and stride are pushed, as well as 140 array pointer enables and the current vertex array set binding. 141 When the attribute set that includes vertex array information is 142 popped, the binding is first restored to its pushed value and then 143 the enables and the array pointers, types, size and stride are 144 are restored to their pushed values. 145 146Additions to the GLX Specification 147 148 No change is made to the GLX API. 149 150GLX Protocol 151 152 None 153 154Errors 155 156 INVALID_VALUE is generated if GenArraySetsEXT parameter <n> is negative. 157 158 INVALID_VALUE is generated if DeleteArraySetsEXT parameter <n> is 159 negative. 160 161 INVALID_OPERATION is generated if BindArraySetEXT parameter <n> is 162 negative. 163 164 INVALID_OPERATION is generated if any of the commands defined in this 165 extension is executed between the execution of Begin and the corresponding 166 execution of End. 167 168New State 169 170 Get Value Get Command Type Value Attrib 171 --------- ----------- ---- ------- ------ 172 173 ARRAY_SET_BINDING_EXT GetIntegerv Z+ 0 vertex-array 174 175New Implementation Dependent State 176 177 None 178 179 180