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 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 vertex array set names in . 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 pointing to a list of names of array sets to be deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt on the sets to be deleted before deleting the . 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 is the name of a valid vertex array set. If 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 when GetIntegerv is called with 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 is negative. INVALID_VALUE is generated if DeleteArraySetsEXT parameter is negative. INVALID_OPERATION is generated if BindArraySetEXT parameter 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