1Name 2 3 EXT_vertex_array_setXXX 4 (No GenName version) 5 6Name Strings 7 8 GL_EXT_vertex_array_setXXX 9 10Version 11 12 $Date: 1999/04/03 08:40:30 $ $Revision: 1.2 $ 13 14Number 15 16 ??? 17 18Dependencies 19 20 EXT_static_vertex_array 21 22Overview 23 24 This extension introduces named vertex array sets which encapsulate 25 vertex array state on the client side. The main purpose of these 26 sets is to keep pointers to static vertex data and provide a name 27 for different sets of static vertex data. The specification of 28 static vertex data is done through EXT_static_vertex_array extension. 29 30Issues 31 32 * Should we allow vertex array sets to be shared between 33 client side contexts? 34 35New Procedures and Functions 36 37 const void *CreateArraySetExt(void); 38 39 void BindArraySetEXT(const void *arrayset); 40 41 void DeleteArraySetsEXT(sizei n, 42 const void *arrayset[]); 43 44New Tokens 45 46 Accepted by the <pname> parameter of GetPointerv: 47 48 ARRAY_SET_BINDING_EXT 49 50Additions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, 51 Rasterization, Per-Fragment Operations and the Frame Buffer) 52 53 None 54 55Additions to Chapter 5 of the 1.1 Specification (Special Functions) 56 57 A vertex array set is created by calling CreateArraySet which 58 returns the name of the newly created vertex array set. The 59 newly created vertex array set also becomes the current 60 vertex array set. The state encapsulated by a vertex array 61 set immediately after it is first bound is equivalent to the 62 default vertex array state at GL initialization. 63 64 Subsequent binding of a vertex array set is accomplished by 65 calling BindArraySetEXT with arrayset set to the name of a 66 previously created vertex array set. Subsequent bindings of a 67 vertex array set have no effect on its encapsulated state 68 unless changed 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 NULL. Unlike other vertex array sets, the NULL 74 set cannot be deleted. 75 76 Vertex array sets are deleted by calling DeleteArraySetsEXT with 77 <arrayset> pointing to a list of <n> names of array sets to be 78 deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt 79 on the sets to be deleted before deleting the <arrayset>. Once a 80 vertex array set is deleted, it has no contents, and its name is 81 freed. If a vertex array set that is currently bound is deleted, 82 the binding reverts to zero. DeleteArraySetsEXT ignores names 83 that do not correspond to array sets, including NULL. 84 85Additions to Chapter 6 of the 1.0 Specification (State and State Requests) 86 87 The name of the currently bound vertex array set is returned in <params> 88 when GetPointerv is called with <pname> set to ARRAY_SET_BINDING_EXT. 89 If no vertex array set is bound, NULL is returned. 90 91 A vertex array set comprises of vertex array pointers, the size and 92 type information for each array, the corresponding enable flags and the 93 range of static data for each array. More explicitly, the state list 94 95 ARRAY_ELEMENT_LOCK_COUNT_EXT 96 VERTEX_ARRAY 97 VERTEX_ARRAY_SIZE 98 VERTEX_ARRAY_TYPE 99 VERTEX_ARRAY_STRIDE 100 VERTEX_ARRAY_POINTER 101 NORMAL_ARRAY 102 NORMAL_ARRAY_TYPE 103 NORMAL_ARRAY_STRIDE 104 NORMAL_ARRAY_POINTER 105 COLOR_ARRAY 106 COLOR_ARRAY_SIZE 107 COLOR_ARRAY_TYPE 108 COLOR_ARRAY_STRIDE 109 COLOR_ARRAY_POINTER 110 INDEX_ARRAY 111 INDEX_ARRAY_TYPE 112 INDEX_ARRAY_STRIDE 113 INDEX_ARRAY_POINTER 114 TEXTURE_COORD_ARRAY 115 TEXTURE_COORD_ARRAY_SIZE 116 TEXTURE_COORD_ARRAY_TYPE 117 TEXTURE_COORD_ARRAY_STRIDE 118 TEXTURE_COORD_ARRAY_POINTER 119 EDGE_FLAG_ARRAY 120 EDGE_FLAG_ARRAY_STRIDE 121 EDGE_FLAG_ARRAY_POINTER 122 123 composes a single vertex array set. 124 125 When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, 126 the array pointers, types, size and stride are pushed, as well as 127 array pointer enables and the current vertex array set binding. 128 When the attribute set that includes vertex array information is 129 popped, the binding is first restored to its pushed value and then 130 the enables and the array pointers, types, size and stride are 131 are restored to their pushed values. 132 133Additions to the GLX Specification 134 135 No change is made to the GLX API. 136 137GLX Protocol 138 139 None 140 141Errors 142 INVALID_VALUE is generated if DeleteArraySetsEXT parameter <n> is 143 negative. 144 145 INVALID_OPERATION may be generated if any of the commands defined in this 146 extension is executed between the execution of Begin and the corresponding 147 execution of End. 148 149New State 150 151 Get Value Get Command Type Value Attrib 152 --------- ----------- ---- ------- ------ 153 154 ARRAY_SET_BINDING_EXT GetPointerv Y 0 vertex-array 155 156New Implementation Dependent State 157 158 None 159 160 161