15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_vertex_array_set / GenName version 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_vertex_array_set 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci $Date: 1997/09/17 18:23:47 $ $Revision: 1.2 $ 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci ??? 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci EXT_static_vertex_array 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciOverview 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci This extension introduces named vertex array sets which encapsulate 245bd8deadSopenharmony_ci vertex array state on the client side. The main purpose of these 255bd8deadSopenharmony_ci sets is to keep pointers to static vertex data and provide a name 265bd8deadSopenharmony_ci for different sets of static vertex data. The specification of 275bd8deadSopenharmony_ci static vertex data is done through EXT_static_vertex_array extension. 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ciIssues 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci * Should we allow vertex array sets to be shared between 325bd8deadSopenharmony_ci client side contexts? 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciNew Procedures and Functions 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci void GenArraySetsEXT(sizei n, 375bd8deadSopenharmony_ci uint* arrayset); 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci void BindArraySetEXT(uint arrayset); 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci void DeleteArraySetsEXT(sizei n, 425bd8deadSopenharmony_ci const uint* arrayset); 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci boolean IsArraySetEXT(uint arrayset); 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ciNew Tokens 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 495bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci ARRAY_SET_BINDING_EXT 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ciAdditions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, 545bd8deadSopenharmony_ci Rasterization, Per-Fragment Operations and the Frame Buffer) 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci None 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions) 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci A vertex array set is created by binding an unused name. This binding 615bd8deadSopenharmony_ci is accomplished by calling BindArraySetEXT with arrayset set to 625bd8deadSopenharmony_ci the name of the new vertex array set. 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci The state encapsulated by a vertex array set immediately after 655bd8deadSopenharmony_ci it is first bound is quivalent to the default vertex array 665bd8deadSopenharmony_ci state at GL initialization. Subsequent bindings of a vertex 675bd8deadSopenharmony_ci array set have no effect on its encapsulated state unless changed 685bd8deadSopenharmony_ci explicitly. 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci When an OpenGL context is created, there is set of default vertex 715bd8deadSopenharmony_ci array state associated with the context. In order that the access to 725bd8deadSopenharmony_ci this default state is not lost, this extension treats the default state 735bd8deadSopenharmony_ci as if its name was zero. Unlike other vertex array sets, the zero 745bd8deadSopenharmony_ci set cannot be deleted. 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci GenArraySetsEXT returns <n> vertex array set names in <arrayset>. 775bd8deadSopenharmony_ci These names are chosen in an unspecified manner, the only condition being 785bd8deadSopenharmony_ci that only names that were not in use immediately prior to the call to 795bd8deadSopenharmony_ci GenArraySetsEXT are considered. Names returned by GenArraySetsEXT 805bd8deadSopenharmony_ci are marked as used (so that they are not returned by subsequent calls to 815bd8deadSopenharmony_ci GenArraySetsEXT), but they are associated with a vertex array set 825bd8deadSopenharmony_ci only after they are first bound (just as if the name were unused). 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci Vertex array sets are deleted by calling DeleteArraySetsEXT with 855bd8deadSopenharmony_ci <arrayset> pointing to a list of <n> names of array sets to be 865bd8deadSopenharmony_ci deleted. DeleteArraySetsEXT implicitly performs a UnlockArraysExt 875bd8deadSopenharmony_ci on the sets to be deleted before deleting the <arrayset>. Once a 885bd8deadSopenharmony_ci vertex array set is deleted, it has no contents, and its name is freed. 895bd8deadSopenharmony_ci If a pointer set that is currently bound is deleted, the binding 905bd8deadSopenharmony_ci reverts to zero. DeleteArraySetsEXT ignores names that do not 915bd8deadSopenharmony_ci correspond to array sets, including zero. 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci IsArraySetEXT returns TRUE if <arrayset> is the name of a valid 965bd8deadSopenharmony_ci vertex array set. If <arrayset> is zero, or is a non-zero value 975bd8deadSopenharmony_ci that is not the name of a vertex array set, or if an error condition 985bd8deadSopenharmony_ci occurs, IsArraySetEXT returns FALSE. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci The name of the currently bound vertex array set is returned in <params> 1015bd8deadSopenharmony_ci when GetIntegerv is called with <pname> set to ARRAY_SET_BINDING_EXT. 1025bd8deadSopenharmony_ci If no vertex array set is bound, zero is returned. 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci A vertex array set comprises of vertex array pointers, the size and 1055bd8deadSopenharmony_ci type information for each array, the corresponding enable flags and the 1065bd8deadSopenharmony_ci range of static data for each array. More explicitly, the state list 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci ARRAY_ELEMENT_LOCK_COUNT_EXT 1095bd8deadSopenharmony_ci VERTEX_ARRAY 1105bd8deadSopenharmony_ci VERTEX_ARRAY_SIZE 1115bd8deadSopenharmony_ci VERTEX_ARRAY_TYPE 1125bd8deadSopenharmony_ci VERTEX_ARRAY_STRIDE 1135bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER 1145bd8deadSopenharmony_ci NORMAL_ARRAY 1155bd8deadSopenharmony_ci NORMAL_ARRAY_TYPE 1165bd8deadSopenharmony_ci NORMAL_ARRAY_STRIDE 1175bd8deadSopenharmony_ci NORMAL_ARRAY_POINTER 1185bd8deadSopenharmony_ci COLOR_ARRAY 1195bd8deadSopenharmony_ci COLOR_ARRAY_SIZE 1205bd8deadSopenharmony_ci COLOR_ARRAY_TYPE 1215bd8deadSopenharmony_ci COLOR_ARRAY_STRIDE 1225bd8deadSopenharmony_ci COLOR_ARRAY_POINTER 1235bd8deadSopenharmony_ci INDEX_ARRAY 1245bd8deadSopenharmony_ci INDEX_ARRAY_TYPE 1255bd8deadSopenharmony_ci INDEX_ARRAY_STRIDE 1265bd8deadSopenharmony_ci INDEX_ARRAY_POINTER 1275bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY 1285bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_SIZE 1295bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_TYPE 1305bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_STRIDE 1315bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER 1325bd8deadSopenharmony_ci EDGE_FLAG_ARRAY 1335bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_STRIDE 1345bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_POINTER 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci composes a single vertex array set. 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, 1395bd8deadSopenharmony_ci the array pointers, types, size and stride are pushed, as well as 1405bd8deadSopenharmony_ci array pointer enables and the current vertex array set binding. 1415bd8deadSopenharmony_ci When the attribute set that includes vertex array information is 1425bd8deadSopenharmony_ci popped, the binding is first restored to its pushed value and then 1435bd8deadSopenharmony_ci the enables and the array pointers, types, size and stride are 1445bd8deadSopenharmony_ci are restored to their pushed values. 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ciAdditions to the GLX Specification 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ci No change is made to the GLX API. 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ciGLX Protocol 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci None 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ciErrors 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci INVALID_VALUE is generated if GenArraySetsEXT parameter <n> is negative. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci INVALID_VALUE is generated if DeleteArraySetsEXT parameter <n> is 1595bd8deadSopenharmony_ci negative. 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci INVALID_OPERATION is generated if BindArraySetEXT parameter <n> is 1625bd8deadSopenharmony_ci negative. 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci INVALID_OPERATION is generated if any of the commands defined in this 1655bd8deadSopenharmony_ci extension is executed between the execution of Begin and the corresponding 1665bd8deadSopenharmony_ci execution of End. 1675bd8deadSopenharmony_ci 1685bd8deadSopenharmony_ciNew State 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci Get Value Get Command Type Value Attrib 1715bd8deadSopenharmony_ci --------- ----------- ---- ------- ------ 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ci ARRAY_SET_BINDING_EXT GetIntegerv Z+ 0 vertex-array 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ciNew Implementation Dependent State 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ci None 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci 180