15bd8deadSopenharmony_ciXXX - Not complete yet!!! 25bd8deadSopenharmony_ciName 35bd8deadSopenharmony_ci 45bd8deadSopenharmony_ci SGIX_vertex_array_object 55bd8deadSopenharmony_ci 65bd8deadSopenharmony_ciName Strings 75bd8deadSopenharmony_ci 85bd8deadSopenharmony_ci GL_SGIX_vertex_array_object 95bd8deadSopenharmony_ci 105bd8deadSopenharmony_ciVersion 115bd8deadSopenharmony_ci 125bd8deadSopenharmony_ci $Date: 1997/02/21 17:33:22 $ $Revision: 1.3 $ 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciNumber 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci XXX 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciDependencies 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Requires either OpenGL 1.1 or EXT_vertex_array to be present. 215bd8deadSopenharmony_ci EXT_compiled_vertex_array affects the definition of this extension. 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciOverview 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci This extension introduces named vertex array objects. This extension is 265bd8deadSopenharmony_ci primarily useful when coupled with the EXT_compiled_vertex_array extension, 275bd8deadSopenharmony_ci although that extension is not strictly required. 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci A significant problem with compiled vertex arrays is that they allow only 305bd8deadSopenharmony_ci one set of arrays to be locked at one time. This means that 315bd8deadSopenharmony_ci implementations of compiled vertex array cannot cache copies of vertex 325bd8deadSopenharmony_ci array data effectively when more than one vertex array is used to compose 335bd8deadSopenharmony_ci each rendered frame. After the first vertex array data is locked, and 345bd8deadSopenharmony_ci perhaps cached by the implementation, the locking of subsequent vertex 355bd8deadSopenharmony_ci arrays forces the cached copy of the first vertex array to be lost. It 365bd8deadSopenharmony_ci cannot be reused next time the original vertex array is re-locked. The 375bd8deadSopenharmony_ci only way around this situation is for the application program to put all 385bd8deadSopenharmony_ci vertex array data into one humungous array and lock it all at once, but 395bd8deadSopenharmony_ci this is an unreasonable application burden. 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci The vertex array object extension addresses this issue by allowing 425bd8deadSopenharmony_ci multiple sets of vertex arrays to be locked, and thus cached in the 435bd8deadSopenharmony_ci graphics hardware, at one time. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ciIssues 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci * It's not clear how useful this is without EXT_compiled_vertex_array. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci A: It could allow the implementation to leave DMA-able arrays locked in 505bd8deadSopenharmony_ci host memory, even while they are not bound. This can speed subsequent 515bd8deadSopenharmony_ci downloads. Does this really matter? 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci * Why can't you just use display lists for this? 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci Matt: On some low-end systems, GL hardware state cannot be read back from 565bd8deadSopenharmony_ci the hardware, so the state is stored either on the CPU or early in the gfx 575bd8deadSopenharmony_ci pipeline. If the storage location from which display lists are injected 585bd8deadSopenharmony_ci into the gfx pipe is downstream from this GL state shadow unit, then 595bd8deadSopenharmony_ci executing display lists cannot modify GL state. In summary, low-end 605bd8deadSopenharmony_ci graphics hardware cannot accelerate display lists since they can modify GL 615bd8deadSopenharmony_ci state. Note that even "easy" display lists with only vertex and color 625bd8deadSopenharmony_ci data modify state. Vertex array objects are vastly superior to display 635bd8deadSopenharmony_ci lists in that they are not required to update the GL state that they 645bd8deadSopenharmony_ci modify. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci Phil: Vertex arrays, unlike display lists, leave behind no "side-effect" 675bd8deadSopenharmony_ci state, so they don't need to influence the shadow state. In general, 685bd8deadSopenharmony_ci vertex array objects are much more "hardware-friendly" than display lists. 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci * Rather than add an entirely new mechanism, which applies to only one 715bd8deadSopenharmony_ci case of the many that display lists cover, could you add an extension that 725bd8deadSopenharmony_ci relaxes the state-modification behavior of dlists? 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci Matt: Perhaps it could be done, but i don't think anyone would like that. 755bd8deadSopenharmony_ci It pretty much breaks the display list model. In order for display lists 765bd8deadSopenharmony_ci to really be acceleratable on Odyssey, all glEnd commands would have to 775bd8deadSopenharmony_ci lose current state. 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci Dave Gorgen: A context switch could happen even in the midst of a DL, so 805bd8deadSopenharmony_ci the idea of relaxing the state-modifying behavior of display lists seems 815bd8deadSopenharmony_ci quite messy to specify. State could be lost at essentially any glEnd 825bd8deadSopenharmony_ci function. 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci * What about just accelerating vertex arrays in display lists? The idea 855bd8deadSopenharmony_ci is to build a display list which contains only DrawElements commands. 865bd8deadSopenharmony_ci Such a display list would have the desired property of not modifying any 875bd8deadSopenharmony_ci GL state. 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci Matt: We want to cache the vertex array data. And we want to be able to 905bd8deadSopenharmony_ci have multiple arrays of data cached at the same time. Caching drawarrays 915bd8deadSopenharmony_ci in display lists doesn't really buy you anything. What we're looking for 925bd8deadSopenharmony_ci is a way to cache the data in a persistent way, even while other vertex 935bd8deadSopenharmony_ci arrays are in use. Also, multiple uses of the same vertex array data in 945bd8deadSopenharmony_ci different display lists could not be shared by such a mechanism. 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci * Should we add a general object mechanism? 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci Yes 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ciReasoning 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci * Note that PrioritizeVertexArraysSGIX and AreVertexArraysResidentSGIX do 1035bd8deadSopenharmony_ci take zero as a valid argument, which differs with the EXT_texture_object. 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci * Regarding display lists on Odyssey: 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ciNew Procedures and Functions 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci void GenVertexArraysSGIX(sizei n, 1105bd8deadSopenharmony_ci uint* arrays); 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci void DeleteVertexArraysSGIX(sizei n, 1135bd8deadSopenharmony_ci const uint* arrays); 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci void BindVertexArraySGIX(uint array); 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ci void PrioritizeVertexArraysSGIX(sizei n, 1185bd8deadSopenharmony_ci const uint* arrays, 1195bd8deadSopenharmony_ci const clampf* priorities); 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci boolean AreVertexArraysResidentSGIX(sizei n, 1225bd8deadSopenharmony_ci const uint* arrays, 1235bd8deadSopenharmony_ci boolean* residences); 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci boolean IsVertexArraySGIX(uint array); 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ciNew Tokens 1285bd8deadSopenharmony_ci 1295bd8deadSopenharmony_ci Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv, 1305bd8deadSopenharmony_ci GetIntegerv: 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci VERTEX_ARRAY_PRIORITY_SGIX 0x???? 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv, 1355bd8deadSopenharmony_ci GetIntegerv: 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci VERTEX_ARRAY_RESIDENT_SGIX 0x???? 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv, 1405bd8deadSopenharmony_ci GetIntegerv: 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_SGIX 0x???? 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci Add a new section, 2.8.1: Vertex Array Objects. 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ci It is possible to create named vertex array objects. The name space for 1495bd8deadSopenharmony_ci vertex array objects is the unsigned integers, with zero reserved by the 1505bd8deadSopenharmony_ci GL. 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci A vertex array object is created by binding an unused name. This binding 1535bd8deadSopenharmony_ci is accomplished by calling BindVertexArraySGIX with <array> set to the 1545bd8deadSopenharmony_ci name of the new vertex array object. When a vertex array object is bound, 1555bd8deadSopenharmony_ci the association with the previously bound vertex array is automatically 1565bd8deadSopenharmony_ci broken. When a new vertex array object is first created, it is a clean 1575bd8deadSopenharmony_ci copy of the default GL state for all vertex array state fields, as 1585bd8deadSopenharmony_ci described in the additions to Section 6. 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci While a vertex array object is bound, GL operations affect the bound 1615bd8deadSopenharmony_ci vertex array object, and queries return state from the bound vertex array 1625bd8deadSopenharmony_ci object. If DrawElements, ArrayElement, or DrawArrays are invoked, the 1635bd8deadSopenharmony_ci bound vertex array object is used. 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci In order that access to the default vertex array not be lost, this 1665bd8deadSopenharmony_ci extension treats them as though their names were all zero. Thus the 1675bd8deadSopenharmony_ci default vertex array is operated on, queried, and applied while zero is 1685bd8deadSopenharmony_ci bound. 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci Vertex Array objects are deleted by calling DeleteVertexArraysSGIX with 1715bd8deadSopenharmony_ci <arrays> pointing to a list of <n> names of vertex array object to be 1725bd8deadSopenharmony_ci deleted. After a vertex array object is deleted, it has no contents and 1735bd8deadSopenharmony_ci its name is freed. If a vertex array object that is currently bound is 1745bd8deadSopenharmony_ci deleted, the binding reverts to zero. DeleteVertexArraysSGIX ignores 1755bd8deadSopenharmony_ci names that do not correspond to vertex arrays objects, including zero. 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ci GenVertexArraysSGIX returns <n> vertex array object names in <arrays>. 1785bd8deadSopenharmony_ci These names are chosen in an unspecified manner, the only condition being 1795bd8deadSopenharmony_ci that only names that were not in use immediately prior to the call to 1805bd8deadSopenharmony_ci GenVertexArraysSGIX are considered. Names returned by GenVertexArraysSGIX 1815bd8deadSopenharmony_ci are marked as used (so that they are not returned by subsequent calls to 1825bd8deadSopenharmony_ci GenVertexArraysSGIX), but they are associated with a vertex array object 1835bd8deadSopenharmony_ci only after they are first bound (just as if the name were unused). 1845bd8deadSopenharmony_ci 1855bd8deadSopenharmony_ci An implementation may choose to establish a working set of vertex array 1865bd8deadSopenharmony_ci objects on which binding operations are performed with higher performance. 1875bd8deadSopenharmony_ci A vertex array object that is currently being treated as a part of the 1885bd8deadSopenharmony_ci working set is said to be resident. AreVertexArraysResidentSGIX returns 1895bd8deadSopenharmony_ci TRUE if all of the <n> vertex array objects (or default vertex arrays) 1905bd8deadSopenharmony_ci named in <arrays> are resident, FALSE otherwise. Note that the default 1915bd8deadSopenharmony_ci vertex array may be listed in the <arrays> parameter. If FALSE is 1925bd8deadSopenharmony_ci returned, the residence of each vertex array object (and possibly that of 1935bd8deadSopenharmony_ci the default vertex array) is returned in <residences>. Otherwise the 1945bd8deadSopenharmony_ci contents of the <residences> array are not changed. If any of the names 1955bd8deadSopenharmony_ci in <arrays> is not the name of a vertex array object or zero, FALSE is 1965bd8deadSopenharmony_ci returned, the error INVALID_VALUE is generated, and the contents of 1975bd8deadSopenharmony_ci <residences> are indeterminate. The resident status of a single bound 1985bd8deadSopenharmony_ci vertex array object can also be queried by calling GetIntegerv, 1995bd8deadSopenharmony_ci GetBooleanv, GetDoublev, or GetFloatv with <value> set to 2005bd8deadSopenharmony_ci VERTEX_ARRAY_RESIDENT_SGIX. Note that the residence status of vertex 2015bd8deadSopenharmony_ci array zero may be determined by calling any of 2025bd8deadSopenharmony_ci AreVertexArraysResidentSGIX, GetFloatv, GetDoublev, GetIntegerv, or 2035bd8deadSopenharmony_ci GetBooleanv. 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci Applications guide the OpenGL implementation in determining which vertex 2065bd8deadSopenharmony_ci array objects should be resident by specifying a priority for each vertex 2075bd8deadSopenharmony_ci array object. PrioritizeVertexArraysSGIX sets the priorities of the <n> 2085bd8deadSopenharmony_ci vertex array objects in <arrays> to the values in <priorities>. Each 2095bd8deadSopenharmony_ci priority value is clamped to the range [0.0, 1.0] before it is assigned. 2105bd8deadSopenharmony_ci Zero indicates the lowest priority, and hence the least likelihood of 2115bd8deadSopenharmony_ci being resident. One indicates the highest priority, and hence the 2125bd8deadSopenharmony_ci greatest likelihood of being resident. PrioritizeVertexArraysSGIX does 2135bd8deadSopenharmony_ci accept priorities for and vertex array zero, the default vertex array 2145bd8deadSopenharmony_ci object. 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci Add a new section, 2.8.2: Compiled Vertex Array Objects. 2175bd8deadSopenharmony_ci 2185bd8deadSopenharmony_ci LockArraysEXT and UnlockArraysEXT cause vertex array objects (or the 2195bd8deadSopenharmony_ci default vertex array) which is currently bound to be considered locked. 2205bd8deadSopenharmony_ci Locking allows pre-compilation or copying of the array contents. The 2215bd8deadSopenharmony_ci implementation is free to copy array elements when they become locked, and 2225bd8deadSopenharmony_ci use those cached copies until such time as the vertex array becomes 2235bd8deadSopenharmony_ci unlocked. 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ci When a vertex array object (or the default vertex array) which was bound 2265bd8deadSopenharmony_ci becomes unbound (due to a rebinding to another object or default texture), 2275bd8deadSopenharmony_ci the current lock state is retained in the vertex array object. When a new 2285bd8deadSopenharmony_ci vertex array object is bound, the lock state of the new current array 2295bd8deadSopenharmony_ci object is restored from the last time it was bound. 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci If vertex array data is locked when an object becomes unbound, the memory 2325bd8deadSopenharmony_ci in the client-side array should not be modified until after that vertex 2335bd8deadSopenharmony_ci array object is both rebound and unlocked. In other words, locking 2345bd8deadSopenharmony_ci persists even when the vertex object is currently unbound. The client 2355bd8deadSopenharmony_ci array is still considered locked, and its contents should not be changed 2365bd8deadSopenharmony_ci or undefined results may occur. 2375bd8deadSopenharmony_ci 2385bd8deadSopenharmony_ci This behavior allows applications using multiple vertex array objects to 2395bd8deadSopenharmony_ci retain cached copies of those vertex arrays in the graphics hardware, 2405bd8deadSopenharmony_ci whenever possible. 2415bd8deadSopenharmony_ci 2425bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization) 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ci None 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 2475bd8deadSopenharmony_ciand the Frame Buffer) 2485bd8deadSopenharmony_ci 2495bd8deadSopenharmony_ci None 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions) 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci None of these commands are included in display lists. 2545bd8deadSopenharmony_ci 2555bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ci IsVertexArraySGIX returns TRUE if <array> is the name of a valid vertex 2585bd8deadSopenharmony_ci array object. If <array> is zero, or is a non-zero value that is not 2595bd8deadSopenharmony_ci the name of a vertex array object, or if an error condition occurs, 2605bd8deadSopenharmony_ci IsVertexArraySGIX returns FALSE. 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ci The name of the vertex array object currently bound is returned in 2635bd8deadSopenharmony_ci <params> when GetIntegerv is called with <value> set to 2645bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_SGIX. If no vertex array object is currently bound, 2655bd8deadSopenharmony_ci zero is returned. 2665bd8deadSopenharmony_ci 2675bd8deadSopenharmony_ci A vertex array object comprises the vertex array priority, element size, 2685bd8deadSopenharmony_ci type, stride, and client array pointters that are associated with that 2695bd8deadSopenharmony_ci object. More explicitly, the state list 2705bd8deadSopenharmony_ci 2715bd8deadSopenharmony_ci VERTEX_ARRAY_PRIORITY_SGIX, 2725bd8deadSopenharmony_ci VERTEX_ARRAY_SIZE, 2735bd8deadSopenharmony_ci VERTEX_ARRAY_TYPE, 2745bd8deadSopenharmony_ci VERTEX_ARRAY_STRIDE, 2755bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER, 2765bd8deadSopenharmony_ci NORMAL_ARRAY_TYPE, 2775bd8deadSopenharmony_ci NORMAL_ARRAY_STRIDE, 2785bd8deadSopenharmony_ci NORMAL_ARRAY_POINTER, 2795bd8deadSopenharmony_ci COLOR_ARRAY_SIZE, 2805bd8deadSopenharmony_ci COLOR_ARRAY_TYPE, 2815bd8deadSopenharmony_ci COLOR_ARRAY_STRIDE, 2825bd8deadSopenharmony_ci COLOR_ARRAY_POINTER, 2835bd8deadSopenharmony_ci INDEX_ARRAY_TYPE, 2845bd8deadSopenharmony_ci INDEX_ARRAY_STRIDE, 2855bd8deadSopenharmony_ci INDEX_ARRAY_POINTER, 2865bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_SIZE, 2875bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_TYPE, 2885bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_STRIDE, 2895bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER, 2905bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_STRIDE, 2915bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_POINTER, 2925bd8deadSopenharmony_ci ARRAY_ELEMENT_LOCK_FIRST_EXT, 2935bd8deadSopenharmony_ci ARRAY_ELEMENT_LOCK_COUNT_EXT 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci composes a single vertex array object. 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ciAdditions to the GLX Specification 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci Vertex array objects are shared between GLX rendering contexts if and only 3005bd8deadSopenharmony_ci if the rendering contexts share display lists. No change is made to 3015bd8deadSopenharmony_ci the GLX API. 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ciGLX Protocol 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci XXX - Not figured out yet. 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ciDependencies on OpenGL 1.1 3085bd8deadSopenharmony_ciDependencies on EXT_vertex_array 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci Requires either OpenGL 1.1 or EXT_vertex_array to be present. 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ciDependencies on EXT_compiled_vertex_array 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci If EXT_compiled_vertex_array is not supported, section 2.8.2 should 3155bd8deadSopenharmony_ci be omited, and the ARRAY_ELEMENT_XXX constants in the Chapter 6 addition 3165bd8deadSopenharmony_ci should be omitted. 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ciErrors 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ci INVALID_VALUE is generated if GenVertexArraysSGIX parameter <n> is 3215bd8deadSopenharmony_ci negative. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci INVALID_VALUE is generated if DeleteVertexArraysSGIX parameter <n> is 3245bd8deadSopenharmony_ci negative. 3255bd8deadSopenharmony_ci 3265bd8deadSopenharmony_ci INVALID_VALUE is generated if PrioritizeVertexArraysSGIX parameter <n> 3275bd8deadSopenharmony_ci negative. 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci INVALID_VALUE is generated if AreVertexArraysResidentSGIX parameter <n> is 3305bd8deadSopenharmony_ci negative. 3315bd8deadSopenharmony_ci 3325bd8deadSopenharmony_ci INVALID_VALUE is generated by AreVertexArraysResidentSGIX if any of the 3335bd8deadSopenharmony_ci names in <arrays> is not the name of a vertex array object or zero. 3345bd8deadSopenharmony_ci 3355bd8deadSopenharmony_ci INVALID_OPERATION is generated if any of the commands defined in this 3365bd8deadSopenharmony_ci extension is executed between the execution of Begin and the corresponding 3375bd8deadSopenharmony_ci execution of End. 3385bd8deadSopenharmony_ci 3395bd8deadSopenharmony_ciNew State 3405bd8deadSopenharmony_ci 3415bd8deadSopenharmony_ci Append to table 6.6: Vertex Array Data: 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Attribute 3445bd8deadSopenharmony_ci --------- ----------- ---- ------------- --------- 3455bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_SGIX GetIntegerv Z+ 0 client 3465bd8deadSopenharmony_ci VERTEX_ARRAY_PRIORITY_SGIX GetFloatv R[0,1] 1 client 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ciNew Implementation Dependent State 3495bd8deadSopenharmony_ci 3505bd8deadSopenharmony_ci None 351