| Name | 
 |  | 
 |     EXT_vertex_array_set / GenName version | 
 |  | 
 | Name Strings | 
 |  | 
 |     GL_EXT_vertex_array_set | 
 |  | 
 | Version | 
 |  | 
 |     $Date: 1997/09/17 18:23:47 $ $Revision: 1.2 $ | 
 |  | 
 | Number | 
 |  | 
 |     ??? | 
 |  | 
 | Dependencies | 
 |  | 
 |     EXT_static_vertex_array    | 
 |  | 
 | Overview | 
 |  | 
 |     This extension introduces named vertex array sets which encapsulate | 
 |     vertex array state on the client side. The main purpose of these  | 
 |     sets is to keep pointers to static vertex data and provide a name  | 
 |     for different sets of static vertex data. The specification of  | 
 |     static vertex data is done through EXT_static_vertex_array extension. | 
 |  | 
 | Issues | 
 |  | 
 |     *   Should we allow vertex array sets to be shared between | 
 |     client side contexts?  | 
 |  | 
 | New Procedures and Functions | 
 |  | 
 |     void GenArraySetsEXT(sizei n, | 
 |             uint* arrayset); | 
 |  | 
 |     void BindArraySetEXT(uint arrayset); | 
 |  | 
 |     void DeleteArraySetsEXT(sizei n, | 
 |             const uint* arrayset); | 
 |  | 
 |     boolean IsArraySetEXT(uint arrayset); | 
 |  | 
 | New Tokens | 
 |  | 
 |     Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, | 
 |     GetFloatv, and GetDoublev: | 
 |  | 
 |     ARRAY_SET_BINDING_EXT | 
 |  | 
 | Additions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, | 
 |     Rasterization, Per-Fragment Operations and the Frame Buffer) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 5 of the 1.1 Specification (Special Functions) | 
 |  | 
 |     A vertex array set is created by binding an unused name. This binding | 
 |     is accomplished by calling BindArraySetEXT with arrayset set to | 
 |     the name of the new vertex array set.  | 
 |      | 
 |     The state encapsulated by a vertex array set immediately after  | 
 |     it is first bound is quivalent to the default vertex array  | 
 |     state at GL initialization.  Subsequent bindings of a vertex  | 
 |     array set have no effect on its encapsulated state unless changed | 
 |     explicitly.  | 
 |      | 
 |     When an OpenGL context is created, there is set of default vertex | 
 |     array state associated with the context. In order that the access to | 
 |     this default state is not lost, this extension treats the default state | 
 |     as if its name was zero. Unlike other vertex array sets, the zero  | 
 |     set cannot be deleted. | 
 |      | 
 |     GenArraySetsEXT returns <n> vertex array set names in <arrayset>. | 
 |     These names are chosen in an unspecified manner, the only condition being  | 
 |     that only names that were not in use immediately prior to the call to | 
 |     GenArraySetsEXT are considered.  Names returned by GenArraySetsEXT  | 
 |     are marked as used (so that they are not returned by subsequent calls to | 
 |     GenArraySetsEXT), but they are associated with a vertex array set  | 
 |     only after they are first bound (just as if the name were unused). | 
 |  | 
 |     Vertex array sets are deleted by calling DeleteArraySetsEXT with  | 
 |     <arrayset> pointing to a list of <n> names of array sets to be  | 
 |     deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt  | 
 |     on the sets to be deleted before deleting the <arrayset>. Once a  | 
 |     vertex array set is deleted, it has no contents, and its name is freed. | 
 |     If a pointer set that is currently bound is deleted, the binding | 
 |     reverts to zero. DeleteArraySetsEXT ignores names that do not | 
 |     correspond to array sets, including zero. | 
 |      | 
 | Additions to Chapter 6 of the 1.0 Specification (State and State Requests) | 
 |  | 
 |     IsArraySetEXT returns TRUE if <arrayset> is the name of a valid | 
 |     vertex array set. If <arrayset> is zero, or is a non-zero value | 
 |     that is not the name of a vertex array set, or if an error condition | 
 |     occurs, IsArraySetEXT returns FALSE.  | 
 |      | 
 |     The name of the currently bound vertex array set is returned in <params> | 
 |     when GetIntegerv is called with <pname> set to  ARRAY_SET_BINDING_EXT.  | 
 |     If no vertex array set is bound, zero is returned. | 
 |      | 
 |     A vertex array set comprises of vertex array pointers, the size and | 
 |     type information for each array, the corresponding enable flags and the | 
 |     range of static data for each array. More explicitly, the state list | 
 |      | 
 |     ARRAY_ELEMENT_LOCK_COUNT_EXT | 
 |     VERTEX_ARRAY | 
 |     VERTEX_ARRAY_SIZE | 
 |     VERTEX_ARRAY_TYPE | 
 |     VERTEX_ARRAY_STRIDE | 
 |     VERTEX_ARRAY_POINTER | 
 |     NORMAL_ARRAY | 
 |     NORMAL_ARRAY_TYPE | 
 |     NORMAL_ARRAY_STRIDE | 
 |     NORMAL_ARRAY_POINTER | 
 |     COLOR_ARRAY | 
 |     COLOR_ARRAY_SIZE | 
 |     COLOR_ARRAY_TYPE | 
 |     COLOR_ARRAY_STRIDE | 
 |     COLOR_ARRAY_POINTER | 
 |     INDEX_ARRAY | 
 |     INDEX_ARRAY_TYPE | 
 |     INDEX_ARRAY_STRIDE | 
 |     INDEX_ARRAY_POINTER | 
 |     TEXTURE_COORD_ARRAY | 
 |     TEXTURE_COORD_ARRAY_SIZE | 
 |     TEXTURE_COORD_ARRAY_TYPE | 
 |     TEXTURE_COORD_ARRAY_STRIDE | 
 |     TEXTURE_COORD_ARRAY_POINTER | 
 |     EDGE_FLAG_ARRAY | 
 |     EDGE_FLAG_ARRAY_STRIDE | 
 |     EDGE_FLAG_ARRAY_POINTER | 
 |      | 
 |     composes a single vertex array set. | 
 |      | 
 |     When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, | 
 |     the array pointers, types, size and stride are pushed, as well as | 
 |     array pointer enables and the current vertex array set binding. | 
 |     When the attribute set that includes vertex array information is | 
 |     popped, the binding is first restored to its pushed value and then | 
 |     the enables and the array pointers, types, size and stride are | 
 |     are restored to their pushed values. | 
 |  | 
 | Additions to the GLX Specification | 
 |  | 
 |     No change is made to the GLX API. | 
 |  | 
 | GLX Protocol | 
 |  | 
 |     None | 
 |  | 
 | Errors | 
 |  | 
 |     INVALID_VALUE is generated if GenArraySetsEXT parameter <n> is negative. | 
 |  | 
 |     INVALID_VALUE is generated if DeleteArraySetsEXT parameter <n> is  | 
 |     negative. | 
 |  | 
 |     INVALID_OPERATION is generated if BindArraySetEXT parameter <n> is  | 
 |     negative. | 
 |  | 
 |     INVALID_OPERATION is generated if any of the commands defined in this | 
 |     extension is executed between the execution of Begin and the corresponding | 
 |     execution of End. | 
 |  | 
 | New State | 
 |  | 
 |     Get Value               Get Command Type    Value   Attrib | 
 |     ---------               ----------- ----    ------- ------ | 
 |  | 
 |     ARRAY_SET_BINDING_EXT   GetIntegerv Z+      0       vertex-array | 
 |  | 
 | New Implementation Dependent State | 
 |      | 
 |     None | 
 |  | 
 |  |