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