15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci APPLE_vertex_array_object 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_APPLE_vertex_array_object 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Bob Beretta, Apple Computer (beretta 'at' apple.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciStatus 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Complete 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciVersion 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci $Date: 2002/09/23 04:37:25 $ $Revision: 1.9 $ 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciNumber 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci 273 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciDependencies 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci APPLE_vertex_array_range affects the definition of this extension. 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci APPLE_element_array affects the definition of this extension. 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci ARB_vertex_program affects the definition of this extension. 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci EXT_secondary_color affects the definition of this extension. 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci EXT_fog_coord affects the definition of this extension. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci ARB_vertex_blend affects the definition of this extension. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciOverview 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci This extension introduces named vertex array objects which encapsulate 425bd8deadSopenharmony_ci vertex array state on the client side. The main purpose of these 435bd8deadSopenharmony_ci objects is to keep pointers to static vertex data and provide a name 445bd8deadSopenharmony_ci for different sets of static vertex data. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci By extending vertex array range functionality this extension allows multiple 475bd8deadSopenharmony_ci vertex array ranges to exist at one time, including their complete sets of 485bd8deadSopenharmony_ci state, in manner analogous to texture objects. 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ci GenVertexArraysAPPLE creates a list of n number of vertex array object 515bd8deadSopenharmony_ci names. After creating a name, BindVertexArrayAPPLE associates the name with 525bd8deadSopenharmony_ci a vertex array object and selects this vertex array and its associated 535bd8deadSopenharmony_ci state as current. To get back to the default vertex array and its 545bd8deadSopenharmony_ci associated state the client should bind to vertex array named 0. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci Once a client is done using a vertex array object it can be deleted with 575bd8deadSopenharmony_ci DeleteVertexArraysAPPLE. The client is responsible for allocating and 585bd8deadSopenharmony_ci deallocating the memory used by the vertex array data, while the 595bd8deadSopenharmony_ci DeleteVertexArraysAPPLE command deletes vertex array object names and 605bd8deadSopenharmony_ci associated state only. 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ciIssues 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci None 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ciNew Procedures and Functions 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci void BindVertexArrayAPPLE(uint array); 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci void DeleteVertexArraysAPPLE(sizei n, const uint *arrays); 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci void GenVertexArraysAPPLE(sizei n, const uint *arrays); 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci boolean IsVertexArrayAPPLE(uint array); 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ciNew Tokens 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 795bd8deadSopenharmony_ci and GetDoublev: 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_APPLE 0x85B5 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ciAdditions to Chapter 2, 3, 4 of the 1.1 Specification (OpenGL Operation, 845bd8deadSopenharmony_ci Rasterization, Per-Fragment Operations and the Frame Buffer) 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci None 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions) 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ci A vertex array object is created by binding an unused name. This binding is 915bd8deadSopenharmony_ci accomplished by calling BindVertexArrayAPPLE with id set to the name of the 925bd8deadSopenharmony_ci new vertex array object. 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci The state encapsulated by a vertex array object immediately after it is 955bd8deadSopenharmony_ci first bound is equivalent to the default vertex array state at GL 965bd8deadSopenharmony_ci initialization. Subsequent bindings of a vertex array object have no effect 975bd8deadSopenharmony_ci on its encapsulated state unless changed explicitly. 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci When an OpenGL context is created, there is set of default vertex array 1005bd8deadSopenharmony_ci state associated with the context. In order that the access to this default 1015bd8deadSopenharmony_ci state is not lost, this extension treats the default state as if its name 1025bd8deadSopenharmony_ci was zero. Unlike other vertex array objects, the zero named object cannot be 1035bd8deadSopenharmony_ci deleted. 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci GenVertexArraysAPPLE returns a list of <n> unused vertex array object names 1065bd8deadSopenharmony_ci in <arrays>. Only names that were not in use immediately prior to the call 1075bd8deadSopenharmony_ci to GenVertexArraysAPPLE are included in the returned list. Names returned 1085bd8deadSopenharmony_ci by GenVertexArraysAPPLE are marked as used, so that they are not returned by 1095bd8deadSopenharmony_ci subsequent calls to GenVertexArraysAPPLE, but they are associated with a 1105bd8deadSopenharmony_ci vertex array object only after they are first bound (just as if the name 1115bd8deadSopenharmony_ci were unused). 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci Vertex array objects are deleted by calling DeleteVertexArraysAPPLE with 1145bd8deadSopenharmony_ci <arrays> specifying a list of <n> names to be deleted. Once a vertex array 1155bd8deadSopenharmony_ci object is deleted it has no contents and its name is freed. If a vertex 1165bd8deadSopenharmony_ci array object that is currently bound is deleted, the binding for that object 1175bd8deadSopenharmony_ci reverts to zero and the default vertex array becomes current. 1185bd8deadSopenharmony_ci DeleteVertexArraysAPPLE ignores names that do not correspond to existing 1195bd8deadSopenharmony_ci vertex array objects, including zero. 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci IsVertexArrayAPPLE returns TRUE if <id> is the name of a valid vertex array 1245bd8deadSopenharmony_ci object. If <id> is zero, or is a non-zero value that is not the name of a 1255bd8deadSopenharmony_ci vertex array object, or if an error condition occurs, IsVertexArrayAPPLE 1265bd8deadSopenharmony_ci returns FALSE. A name that has been returned GenVertexArraysAPPLE but never 1275bd8deadSopenharmony_ci bound with BindVertexArrayAPPLE is not the name of a vertex array object. 1285bd8deadSopenharmony_ci 1295bd8deadSopenharmony_ci The name of the currently bound vertex array object is returned in <params> 1305bd8deadSopenharmony_ci when GetIntegerv is called with <pname> set to VERTEX_ARRAY_BINDING_APPLE. 1315bd8deadSopenharmony_ci If the default vertex array object is currently bound, zero is returned. 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_ci A vertex array object comprises vertex array pointers, the size, type, and 1345bd8deadSopenharmony_ci stride information for each array, the corresponding enable flags and the 1355bd8deadSopenharmony_ci range of static data for each array. More explicitly, the state list 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci VERTEX_ARRAY 1385bd8deadSopenharmony_ci VERTEX_ARRAY_SIZE 1395bd8deadSopenharmony_ci VERTEX_ARRAY_TYPE 1405bd8deadSopenharmony_ci VERTEX_ARRAY_STRIDE 1415bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER 1425bd8deadSopenharmony_ci NORMAL_ARRAY 1435bd8deadSopenharmony_ci NORMAL_ARRAY_TYPE 1445bd8deadSopenharmony_ci NORMAL_ARRAY_STRIDE 1455bd8deadSopenharmony_ci NORMAL_ARRAY_POINTER 1465bd8deadSopenharmony_ci COLOR_ARRAY 1475bd8deadSopenharmony_ci COLOR_ARRAY_SIZE 1485bd8deadSopenharmony_ci COLOR_ARRAY_TYPE 1495bd8deadSopenharmony_ci COLOR_ARRAY_STRIDE 1505bd8deadSopenharmony_ci COLOR_ARRAY_POINTER 1515bd8deadSopenharmony_ci INDEX_ARRAY 1525bd8deadSopenharmony_ci INDEX_ARRAY_TYPE 1535bd8deadSopenharmony_ci INDEX_ARRAY_STRIDE 1545bd8deadSopenharmony_ci INDEX_ARRAY_POINTER 1555bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY 1565bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_SIZE 1575bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_TYPE 1585bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_STRIDE 1595bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER 1605bd8deadSopenharmony_ci EDGE_FLAG_ARRAY 1615bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_STRIDE 1625bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_POINTER 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci composes a single vertex array object. 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci Additionally, if APPLE_vertex_array_range is supported the state list also 1675bd8deadSopenharmony_ci includes 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci VERTEX_ARRAY_RANGE_POINTER_APPLE 1705bd8deadSopenharmony_ci VERTEX_ARRAY_RANGE_LENGTH_APPLE 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci Additionally, if ARB_vertex_program is supported the state list also 1735bd8deadSopenharmony_ci includes 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_ARB 1765bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_SIZE_ARB 1775bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_TYPE_ARB 1785bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_STRIDE_ARB 1795bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_POINTER_ARB 1805bd8deadSopenharmony_ci 1815bd8deadSopenharmony_ci Additionally, if EXT_secondary_color is supported the state list also 1825bd8deadSopenharmony_ci includes 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_EXT 1855bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_SIZE_EXT 1865bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_TYPE_EXT 1875bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_STRIDE_EXT 1885bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_POINTER_EXT 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci Additionally, if EXT_fog_coord is supported the state list also includes 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci FOG_COORDINATE_ARRAY_EXT 1935bd8deadSopenharmony_ci FOG_COORDINATE_ARRAY_TYPE_EXT 1945bd8deadSopenharmony_ci FOG_COORDINATE_ARRAY_STRIDE_EXT 1955bd8deadSopenharmony_ci FOG_COORDINATE_ARRAY_POINTER_EXT 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci Additionally, if ARB_vertex_blend is supported the state list also includes 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci WEIGHT_ARRAY_ARB 2005bd8deadSopenharmony_ci WEIGHT_ARRAY_SIZE_ARB 2015bd8deadSopenharmony_ci WEIGHT_ARRAY_TYPE_ARB 2025bd8deadSopenharmony_ci WEIGHT_ARRAY_STRIDE_ARB 2035bd8deadSopenharmony_ci WEIGHT_ARRAY_POINTER_ARB 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci Additionally, if APPLE_element_array is supported the state list also 2065bd8deadSopenharmony_ci includes 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci ELEMENT_ARRAY_APPLE 2095bd8deadSopenharmony_ci ELEMENT_ARRAY_TYPE_APPLE 2105bd8deadSopenharmony_ci ELEMENT_ARRAY_POINTER_APPLE 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ci When PushClientAttrib is called with CLIENT_VERTEX_ARRAY_BIT enabled, the 2135bd8deadSopenharmony_ci array pointers, types, size and stride are pushed, as well as array pointer 2145bd8deadSopenharmony_ci enables and the current vertex array object binding. When the attribute set 2155bd8deadSopenharmony_ci that includes vertex array information is popped, the binding is first 2165bd8deadSopenharmony_ci restored to its pushed value and then the enables and the array pointers, 2175bd8deadSopenharmony_ci types, size and stride are restored to their pushed values. 2185bd8deadSopenharmony_ci 2195bd8deadSopenharmony_ciAdditions to the GLX Specification 2205bd8deadSopenharmony_ci 2215bd8deadSopenharmony_ci No change is made to the GLX API. 2225bd8deadSopenharmony_ci 2235bd8deadSopenharmony_ciGLX Protocol 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ci None 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ciErrors 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ci INVALID_OPERATION is generated if any of the commands defined in this 2305bd8deadSopenharmony_ci extension is executed between the execution of Begin and the corresponding 2315bd8deadSopenharmony_ci execution of End. 2325bd8deadSopenharmony_ci 2335bd8deadSopenharmony_ciNew State 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci Get Value Get Command Type Value Attrib 2365bd8deadSopenharmony_ci --------- ----------- ---- ------- ------ 2375bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_APPLE GetIntegerv Z+ 0 vertex-array 2385bd8deadSopenharmony_ci 2395bd8deadSopenharmony_ciNew Implementation Dependent State 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci None 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ciRevision History 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci None 246