15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci OES_vertex_array_object 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_OES_vertex_array_object 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Ben Bowman 125bd8deadSopenharmony_ci Yuan Wang 135bd8deadSopenharmony_ci Benj Lipchak 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciContact 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Ben Bowman, Imagination Technologies (benji 'dot' bowman 'at' imgtec 'dot' com) 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciNotice 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Copyright (c) 2009-2013 The Khronos Group Inc. Copyright terms at 225bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciSpecification Update Policy 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 275bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL ES Working Group. For 285bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 295bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 305bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 315bd8deadSopenharmony_ci described in more detail at 325bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciIP Status 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ciStatus 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci Complete. Approved by the OpenGL ES WG on November 11, 2009. 405bd8deadSopenharmony_ci Approved by the Khronos Board of Promoters on January 29, 2010. 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ciVersion 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci Version 16, April 17, 2014 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ciNumber 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci OpenGL ES Extension #71 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ciDependencies 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci This extension is written against the OpenGL ES Common 1.1.12 535bd8deadSopenharmony_ci Specification (April 24, 2008) and the OpenGL ES 2.0.24 545bd8deadSopenharmony_ci Specification (April 22, 2009). 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci OES_matrix_palette affects the definition of this extension. 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciOverview 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci This extension introduces vertex array objects which encapsulate 615bd8deadSopenharmony_ci vertex array states on the server side (vertex buffer objects). 625bd8deadSopenharmony_ci These objects aim to keep pointers to vertex data and to provide 635bd8deadSopenharmony_ci names for different sets of vertex data. Therefore applications are 645bd8deadSopenharmony_ci allowed to rapidly switch between different sets of vertex array 655bd8deadSopenharmony_ci state, and to easily return to the default vertex array state. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciIssues 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci * Should vertex array objects be sharable across multiple OpenGL ES 705bd8deadSopenharmony_ci contexts? 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci RESOLVED: No. The OpenGL ES working group took a straw poll and agreed 735bd8deadSopenharmony_ci that the advantages of compatibility with OpenGL and ease of 745bd8deadSopenharmony_ci implementation were more important than the disadvantage of creating 755bd8deadSopenharmony_ci the first non-shared named object in OpenGL ES. 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci * Is it required for a vertex array object name to be explicitly 785bd8deadSopenharmony_ci generated before being bound? 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci RESOLVED: Yes. The OpenGL ES working group agreed that 815bd8deadSopenharmony_ci compatibility with OpenGL and the ability to to guide developers to 825bd8deadSopenharmony_ci more "future looking" object usage were more important than keeping 835bd8deadSopenharmony_ci consistency with other objects in OpenGL ES 1 and 2. 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ci * Should a vertex array object be allowed to encapsulate client 865bd8deadSopenharmony_ci vertex arrays? 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci RESOLVED: No. The OpenGL ES working group agreed that compatibility 895bd8deadSopenharmony_ci with OpenGL and the ability to to guide developers to more 905bd8deadSopenharmony_ci performant drawing by enforcing VBO usage were more important than 915bd8deadSopenharmony_ci the possibility of hurting adoption of VAOs. 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ci * Should client array indices be employed by DrawElements when a 945bd8deadSopenharmony_ci non-zero vertex array object is bound? 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci RESOLVED: Yes. The original ARB_vao and OpenGL 3.0 incarnations of 975bd8deadSopenharmony_ci this feature allowed client index data, so this extension should 985bd8deadSopenharmony_ci also. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci * When an application attempts to utilise a zero-named vertex array 1015bd8deadSopenharmony_ci buffer or a zero-named element array buffer, while a non-zero 1025bd8deadSopenharmony_ci vertex array object is presently attached, what should happen? 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci RESOLVED: Generally speaking, these kinds of endeavours are 1055bd8deadSopenharmony_ci erroneous, but some cases are deliberately tolerated. And they are 1065bd8deadSopenharmony_ci detailed as follows: 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci - Binding a zero-named vertex array buffer: 1095bd8deadSopenharmony_ci this can be detected by *Pointer(ES1) or VertexAttribPointer(ES2); 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci - if the pointer argument is not NULL: 1125bd8deadSopenharmony_ci this means to bind a client vertex array; 1135bd8deadSopenharmony_ci an INVALID_OPERATION error will be returned. 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci - if the pointer argument is NULL: 1165bd8deadSopenharmony_ci the result or drawing will be undefined, but with no GL error; 1175bd8deadSopenharmony_ci this enables a previously encapsulated vertex array buffer to 1185bd8deadSopenharmony_ci be detached from a vertex array object. 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci - Binding a zero-named element array buffer: 1215bd8deadSopenharmony_ci this can be identified by DrawElements; 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci - no restrictions. 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ciNew Procedures and Functions 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci void BindVertexArrayOES(uint array); 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci void DeleteVertexArraysOES(sizei n, const uint *arrays); 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci void GenVertexArraysOES(sizei n, uint *arrays); 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci boolean IsVertexArrayOES(uint array); 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ciNew Tokens 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv: 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_OES 0x85B5 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ciAdditions to Chapter 2 (OpenGL ES Operation) 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ci * Add a new Section "2.X Vertex Array Objects" after Section "2.9 1455bd8deadSopenharmony_ci Buffer Objects". 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ci The buffer objects that are to be used by the vertex stage of the 1485bd8deadSopenharmony_ci GL ES are collected together to form a vertex array object. All 1495bd8deadSopenharmony_ci state related to the definition of the data used by the vertex 1505bd8deadSopenharmony_ci processor is encapsulated in a vertex array object. 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci The command 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci void GenVertexArraysOES(sizei n, uint *arrays); 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci returns <n> previous unused vertex array object names in <arrays>. 1575bd8deadSopenharmony_ci These names are marked as used, for the purposes of 1585bd8deadSopenharmony_ci GenVertexArraysOES only, but they acquire array state only when 1595bd8deadSopenharmony_ci they are first bound, just as if they were unused. 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci Vertex array objects are deleted by calling 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci void DeleteVertexArraysOES(sizei n, const uint *arrays); 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci <arrays> contains <n> names of vertex array objects to be deleted. 1665bd8deadSopenharmony_ci Once a vertex array object is deleted it has no contents and its 1675bd8deadSopenharmony_ci name becomes unused again. If a vertex array object that is 1685bd8deadSopenharmony_ci currently bound is deleted, the binding for that object reverts to 1695bd8deadSopenharmony_ci zero and the default vertex array becomes current. Unused names in 1705bd8deadSopenharmony_ci <arrays> are silently ignored, as if they have the value zero. 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci The name space for vertex array objects is the unsigned integers, 1735bd8deadSopenharmony_ci with zero reserved for the GL ES. 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci A vertex array object is created by binding an unused name with the 1765bd8deadSopenharmony_ci command 1775bd8deadSopenharmony_ci 1785bd8deadSopenharmony_ci void BindVertexArrayOES(uint array); 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ciIF(ES1) 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci and <array> here is the vertex array object name. The resulting 1835bd8deadSopenharmony_ci vertex array object is a new state vector, comprising all the state 1845bd8deadSopenharmony_ci values (listed in Tables 6.4 & 6.5, except CLIENT_ACTIVE_TEXTURE 1855bd8deadSopenharmony_ci and ARRAY_BUFFER_BINDING): 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci VERTEX_ARRAY, 1885bd8deadSopenharmony_ci VERTEX_ARRAY_SIZE, 1895bd8deadSopenharmony_ci VERTEX_ARRAY_TYPE, 1905bd8deadSopenharmony_ci VERTEX_ARRAY_STRIDE, 1915bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER, 1925bd8deadSopenharmony_ci VERTEX_ARRAY_BUFFER_BINDING, 1935bd8deadSopenharmony_ci 1945bd8deadSopenharmony_ci NORMAL_ARRAY, 1955bd8deadSopenharmony_ci NORMAL_ARRAY_TYPE, 1965bd8deadSopenharmony_ci NORMAL_ARRAY_STRIDE, 1975bd8deadSopenharmony_ci NORMAL_ARRAY_POINTER, 1985bd8deadSopenharmony_ci NORMAL_ARRAY_BUFFER_BINDING, 1995bd8deadSopenharmony_ci 2005bd8deadSopenharmony_ci COLOR_ARRAY, 2015bd8deadSopenharmony_ci COLOR_ARRAY_SIZE, 2025bd8deadSopenharmony_ci COLOR_ARRAY_TYPE, 2035bd8deadSopenharmony_ci COLOR_ARRAY_STRIDE, 2045bd8deadSopenharmony_ci COLOR_ARRAY_POINTER, 2055bd8deadSopenharmony_ci COLOR_ARRAY_BUFFER_BINDING, 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY, 2085bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_SIZE, 2095bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_TYPE, 2105bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_STRIDE, 2115bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER, 2125bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_BUFFER_BINDING, 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci POINT_SIZE_ARRAY_OES, 2155bd8deadSopenharmony_ci POINT_SIZE_ARRAY_TYPE_OES, 2165bd8deadSopenharmony_ci POINT_SIZE_ARRAY_STRIDE_OES, 2175bd8deadSopenharmony_ci POINT_SIZE_ARRAY_POINTER_OES, 2185bd8deadSopenharmony_ci POINT_SIZE_ARRAY_BUFFER_BINDING_OES, 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci ELEMENT_ARRAY_BUFFER_BINDING. 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ci BindVertexArrayOES may also be used to bind an existing vertex 2235bd8deadSopenharmony_ci array object. If the binding is successful, no change is made to 2245bd8deadSopenharmony_ci the state of the bound vertex array object, and any previous 2255bd8deadSopenharmony_ci binding is broken. 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ci BindVertexArrayOES fails and an INVALID_OPERATION error is 2285bd8deadSopenharmony_ci generated if array is not a name returned from a previous call to 2295bd8deadSopenharmony_ci GenVertexArraysOES, or if such a name has since been deleted with 2305bd8deadSopenharmony_ci DeleteVertexArraysOES. An INVALID_OPERATION error is generated if 2315bd8deadSopenharmony_ci any of the *Pointer commands specifying the location and 2325bd8deadSopenharmony_ci organization of vertex array data are called while a non-zero 2335bd8deadSopenharmony_ci vertex array object is bound, zero is bound to the ARRAY_BUFFER 2345bd8deadSopenharmony_ci buffer object binding point, and the pointer argument is not NULL 2355bd8deadSopenharmony_ci [fn1]. 2365bd8deadSopenharmony_ci [fn1: This error makes it impossible to create a vertex array 2375bd8deadSopenharmony_ci object containing client array pointers, while still allowing 2385bd8deadSopenharmony_ci buffer objects to be unbound.] 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci The currently bound vertex array object is used for all commands 2415bd8deadSopenharmony_ci that modify vertex array state, such as 2425bd8deadSopenharmony_ci VertexPointer, 2435bd8deadSopenharmony_ci NormalPointer, 2445bd8deadSopenharmony_ci ColorPointer, 2455bd8deadSopenharmony_ci TexCoordPointer, 2465bd8deadSopenharmony_ci PointSizePointerOES, 2475bd8deadSopenharmony_ci EnableClientState, 2485bd8deadSopenharmony_ci DisableClientState, 2495bd8deadSopenharmony_ci ClientActiveTexture, 2505bd8deadSopenharmony_ci all commands that draw from vertex arrays, such as 2515bd8deadSopenharmony_ci DrawArrays 2525bd8deadSopenharmony_ci DrawElements, 2535bd8deadSopenharmony_ci and all queries of vertex array state (see Chapter 6). 2545bd8deadSopenharmony_ci 2555bd8deadSopenharmony_ciEND(ES1) 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ciIF(ES2) 2585bd8deadSopenharmony_ci 2595bd8deadSopenharmony_ci and <array> here is the vertex array object name. The resulting 2605bd8deadSopenharmony_ci vertex array object is a new state vector, comprising all the state 2615bd8deadSopenharmony_ci values (listed in Table 6.2, except ARRAY_BUFFER_BINDING): 2625bd8deadSopenharmony_ci 2635bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_ENABLED, 2645bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_SIZE, 2655bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_STRIDE, 2665bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_TYPE, 2675bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_NORMALIZED, 2685bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_POINTER, 2695bd8deadSopenharmony_ci ELEMENT_ARRAY_BUFFER_BINDING, 2705bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_BUFFER_BINDING. 2715bd8deadSopenharmony_ci 2725bd8deadSopenharmony_ci BindVertexArrayOES may also be used to bind an existing vertex 2735bd8deadSopenharmony_ci array object. If the binding is successful, no change is made to 2745bd8deadSopenharmony_ci the state of the bound vertex array object, and any previous 2755bd8deadSopenharmony_ci binding is broken. 2765bd8deadSopenharmony_ci 2775bd8deadSopenharmony_ci BindVertexArrayOES fails and an INVALID_OPERATION error is 2785bd8deadSopenharmony_ci generated if array is not a name returned from a previous call to 2795bd8deadSopenharmony_ci GenVertexArraysOES, or if such a name has since been deleted with 2805bd8deadSopenharmony_ci DeleteVertexArraysOES. An INVALID_OPERATION error is generated if 2815bd8deadSopenharmony_ci VertexAttribPointer is called while a non-zero vertex array object 2825bd8deadSopenharmony_ci is bound, zero is bound to the <ARRAY_BUFFER> buffer object binding 2835bd8deadSopenharmony_ci point and the pointer argument is not NULL [fn1]. 2845bd8deadSopenharmony_ci [fn1: This error makes it impossible to create a vertex array 2855bd8deadSopenharmony_ci object containing client array pointers, while still allowing 2865bd8deadSopenharmony_ci buffer objects to be unbound.] 2875bd8deadSopenharmony_ci 2885bd8deadSopenharmony_ci The currently bound vertex array object is used for all commands 2895bd8deadSopenharmony_ci that modify vertex array state, such as VertexAttribPointer and 2905bd8deadSopenharmony_ci EnableVertexAttribArray; all commands that draw from vertex arrays, 2915bd8deadSopenharmony_ci such as DrawArrays and DrawElements; and all queries of vertex 2925bd8deadSopenharmony_ci array state (see Chapter 6). 2935bd8deadSopenharmony_ci 2945bd8deadSopenharmony_ciEND(ES2) 2955bd8deadSopenharmony_ci 2965bd8deadSopenharmony_ci And the presently attached vertex array object has the following 2975bd8deadSopenharmony_ci impacts on the draw commands: 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci While a non-zero vertex array object is bound, if any enabled 3005bd8deadSopenharmony_ci array's buffer binding is zero, when DrawArrays or 3015bd8deadSopenharmony_ci DrawElements is called, the result is undefined. 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ciAdditions to Chapter 3 (Rasterization) 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci * None. 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ciAdditions to Chapter 4 (Per-Fragment Operations and the Framebuffer) 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci * None. 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ciAdditions to Chapter 5 (Special Functions) 3145bd8deadSopenharmony_ci 3155bd8deadSopenharmony_ci * None. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ciAdditions to Chapter 6 (State and State Requests) 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ciIF(ES1) 3215bd8deadSopenharmony_ci 3225bd8deadSopenharmony_ci * Add a new paragraph at the end of Section 6.1.2: Data Conversions 3235bd8deadSopenharmony_ci (Page 119). 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci Vertex array state variables are qualified by the value of 3265bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_OES to determine which vertex array object is 3275bd8deadSopenharmony_ci queried. Tables 6.4 & 6.5 define the set of state stored in a 3285bd8deadSopenharmony_ci vertex array object. 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci * Add a new Section "6.1.X Vertex Array Object Queries" after 3315bd8deadSopenharmony_ci Sections "6.1.6 Buffer Object Queries" (Page 120). 3325bd8deadSopenharmony_ci 3335bd8deadSopenharmony_ci The command 3345bd8deadSopenharmony_ci 3355bd8deadSopenharmony_ci boolean IsVertexArrayOES(uint array); 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci returns TRUE if <array> is the name of a vertex array object. If 3385bd8deadSopenharmony_ci <array> is zero, or a non-zero value that is not the name of a 3395bd8deadSopenharmony_ci vertex array object, IsVertexArrayOES returns FALSE. No error is 3405bd8deadSopenharmony_ci generated if <array> is not a valid array object name. 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ciEND(ES1) 3435bd8deadSopenharmony_ci 3445bd8deadSopenharmony_ciIF(ES2) 3455bd8deadSopenharmony_ci 3465bd8deadSopenharmony_ci * Add a new paragraph at the end of Section 6.1.2: Data Conversions 3475bd8deadSopenharmony_ci (Page 123). 3485bd8deadSopenharmony_ci 3495bd8deadSopenharmony_ci Vertex array state variables are qualified by the value of 3505bd8deadSopenharmony_ci VERTEX_ARRAY_BINDING_OES to determine which vertex array object is 3515bd8deadSopenharmony_ci queried. Table 6.2 defines the set of state stored in a vertex 3525bd8deadSopenharmony_ci array object. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci * Add a new Section "6.1.X Vertex Array Object Queries" between 3555bd8deadSopenharmony_ci Sections "6.1.6 Buffer Object Queries" and "6.1.7 Framebuffer 3565bd8deadSopenharmony_ci Object and Renderbuffer Queries" (Page 126). 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci The command 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ci boolean IsVertexArrayOES(uint array); 3615bd8deadSopenharmony_ci 3625bd8deadSopenharmony_ci returns TRUE if <array> is the name of a vertex array object. If 3635bd8deadSopenharmony_ci <array> is zero, or a non-zero value that is not the name of a 3645bd8deadSopenharmony_ci vertex array object, IsVertexArray returns FALSE. No error is 3655bd8deadSopenharmony_ci generated if <array> is not a valid array object name. 3665bd8deadSopenharmony_ci 3675bd8deadSopenharmony_ci * Modify lines in Section 6.1.8: Shader and Program Queries 3685bd8deadSopenharmony_ci 3695bd8deadSopenharmony_ci Page 131: replace "Note that all the queries except 3705bd8deadSopenharmony_ci CURRENT_VERTEX_ATTRIB return client state." 3715bd8deadSopenharmony_ci with 3725bd8deadSopenharmony_ci "Note that all the queries except CURRENT_VERTEX_ATTRIB return 3735bd8deadSopenharmony_ci values stored in the currently bound vertex array object (the value 3745bd8deadSopenharmony_ci of VERTEX_ARRAY_BINDING). If the zero object is bound, then the 3755bd8deadSopenharmony_ci queries return client state." 3765bd8deadSopenharmony_ci 3775bd8deadSopenharmony_ci Page 131: add lines after "<pname> must be VERTEX_ATTRIB_ARRAY_POINTER." 3785bd8deadSopenharmony_ci The value returned is queried from the currently bound vertex array 3795bd8deadSopenharmony_ci object. If the zero object is bound, the value is queried from 3805bd8deadSopenharmony_ci client state. 3815bd8deadSopenharmony_ci 3825bd8deadSopenharmony_ci 3835bd8deadSopenharmony_ciAdditions to Appendix C (Deleting Shared Objects) 3845bd8deadSopenharmony_ci 3855bd8deadSopenharmony_ci * Add another section in C.2 Sharing objects across multiple OpenGL 3865bd8deadSopenharmony_ci ES contexts (Page 163). 3875bd8deadSopenharmony_ci 3885bd8deadSopenharmony_ci Objects which cannot be shared in this manner include: 3895bd8deadSopenharmony_ci vertex array objects 3905bd8deadSopenharmony_ci 3915bd8deadSopenharmony_ciEND(ES2) 3925bd8deadSopenharmony_ci 3935bd8deadSopenharmony_ciIF(ES1) 3945bd8deadSopenharmony_ci 3955bd8deadSopenharmony_ciDependencies on OES_matrix_palette 3965bd8deadSopenharmony_ci 3975bd8deadSopenharmony_ci If OES_matrix_palette is supported, the language below should be 3985bd8deadSopenharmony_ci added into Chapter 2. 3995bd8deadSopenharmony_ci 4005bd8deadSopenharmony_ci The vertex array object can also comprise the following state values: 4015bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_OES, 4025bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_SIZE_OES, 4035bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_TYPE_OES, 4045bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_STRIDE_OES, 4055bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_POINTER_OES, 4065bd8deadSopenharmony_ci MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES, 4075bd8deadSopenharmony_ci 4085bd8deadSopenharmony_ci WEIGHT_ARRAY_OES, 4095bd8deadSopenharmony_ci WEIGHT_ARRAY_SIZE_OES, 4105bd8deadSopenharmony_ci WEIGHT_ARRAY_TYPE_OES, 4115bd8deadSopenharmony_ci WEIGHT_ARRAY_STRIDE_OES, 4125bd8deadSopenharmony_ci WEIGHT_ARRAY_POINTER_OES, 4135bd8deadSopenharmony_ci WEIGHT_ARRAY_BUFFER_BINDING_OES. 4145bd8deadSopenharmony_ci 4155bd8deadSopenharmony_ci And the currently bound vertex array object can also be used for the 4165bd8deadSopenharmony_ci following commands 4175bd8deadSopenharmony_ci WeightPointerOES, 4185bd8deadSopenharmony_ci MatrixIndexPointerOES. 4195bd8deadSopenharmony_ci 4205bd8deadSopenharmony_ciEND(ES1) 4215bd8deadSopenharmony_ci 4225bd8deadSopenharmony_ciRevision History 4235bd8deadSopenharmony_ci 4245bd8deadSopenharmony_ci Rev. Date Author Changes 4255bd8deadSopenharmony_ci ------- ---------- ------------ ----------------------------------------------------- 4265bd8deadSopenharmony_ci 16 04/17/14 Jon Leech Update wording of first issue (Bug 7847). 4275bd8deadSopenharmony_ci 15 02/05/10 Jon Leech Update Status and assign extension number. 4285bd8deadSopenharmony_ci Reflow spec text to standard widths. 4295bd8deadSopenharmony_ci 14 10/11/09 Ben Bowman Allow VAO to employ client indices. 4305bd8deadSopenharmony_ci 13 09/11/09 Yuan Wang Forbade VAO to employ client array indices. 4315bd8deadSopenharmony_ci 12 04/11/09 Ben Bowman Updated EXT to OES and adopted resolutions of the 4325bd8deadSopenharmony_ci OpenGL ES working group meeting on 04/11/09. (re) 4335bd8deadSopenharmony_ci disallow user generated (non Gen'd) names. 4345bd8deadSopenharmony_ci 11 23/10/09 Ben Bowman Fixed INVALID_OPERATION error for client arrays. 4355bd8deadSopenharmony_ci 10 14/10/09 Ben Bowman Adopted resolutions of the OpenGL ES working group 4365bd8deadSopenharmony_ci meeting on 14/10/09. (re) disallow client arrays to 4375bd8deadSopenharmony_ci be included in VAOs. Disallow sharing of VAOs. 4385bd8deadSopenharmony_ci 9 14/10/09 Yuan Wang Added dependencies on OES_matrix_palette 4395bd8deadSopenharmony_ci 8 14/10/09 Ben Bowman Formatting. Reopen of shared object decision. 4405bd8deadSopenharmony_ci 7 09/09/09 Ben Bowman Cleanup of issues list. 4415bd8deadSopenharmony_ci 6 04/09/09 Yuan Wang Changed contact details and added contributors. 4425bd8deadSopenharmony_ci Replaced IMG with EXT, added the extension for ES1 4435bd8deadSopenharmony_ci specification and added revision history. 4445bd8deadSopenharmony_ci 5 20/08/09 Yuan Wang Allowed VAO to encapsulate client attribute arrays. 4455bd8deadSopenharmony_ci 4 16/07/09 Yuan Wang Added ELEMENT_ARRAY_BUFFER_BINDING into VAO's 4465bd8deadSopenharmony_ci contained states, but took ARRAY_BUFFER_BINDING 4475bd8deadSopenharmony_ci out of the states. 4485bd8deadSopenharmony_ci 3 07/07/09 Yuan Wang Removed VERTEX_ARRAY_IMG token, and removed target 4495bd8deadSopenharmony_ci param from BindVertexArrayIMG, since there is only 4505bd8deadSopenharmony_ci one type of target for VAO. 4515bd8deadSopenharmony_ci 2 26/06/09 Yuan Wang Added IMG affix and VERTEX_ARRAY target for 4525bd8deadSopenharmony_ci BindVertexArrayIMG. 4535bd8deadSopenharmony_ci 1 15/06/09 Yuan Wang Initial revision. 4545bd8deadSopenharmony_ci 4555bd8deadSopenharmony_ci 4565bd8deadSopenharmony_ci 4575bd8deadSopenharmony_ci 458