15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_vertex_array_bgra
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_vertex_array_bgra
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jason Green, TransGaming
125bd8deadSopenharmony_ci    Gavriel State, TransGaming
135bd8deadSopenharmony_ci    Daniel Koch, TransGaming
145bd8deadSopenharmony_ci    Rob Barris, Blizzard
155bd8deadSopenharmony_ci    Mark Krenek, Aspyr
165bd8deadSopenharmony_ci    Ryan Gordon, Destineer
175bd8deadSopenharmony_ci    Nicholas Vining, Destineer
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciContact
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Mark Kilgard, NVIDIA (mjk 'at' nvidia.com)
225bd8deadSopenharmony_ci    Daniel Koch, TransGaming (daniel 'at' transgaming.com)
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciNotice
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Copyright (c) 2009-2013 The Khronos Group Inc. Copyright terms at
275bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciSpecification Update Policy
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
325bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
335bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
345bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
355bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
365bd8deadSopenharmony_ci    described in more detail at
375bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciStatus
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    Complete. Approved by the ARB on July 3, 2009.
425bd8deadSopenharmony_ci    Implemented by NVIDIA, October 2008
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciVersion
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    Last Modified Date:  June 26, 2009
475bd8deadSopenharmony_ci    Version:             2
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ciNumber
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    ARB Extension #68
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ciDependencies
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    This extension is written against the OpenGL 2.1 Specification but
565bd8deadSopenharmony_ci    can apply to OpenGL 1.1 and up.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    This extension interacts with EXT_vertex_array.
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci    This extension interacts with EXT_secondary_color.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    This extension interacts with NV_vertex_program.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    This extension interacts with ARB_vertex_program.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    This extension interacts with ARB_vertex_shader.
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ciOverview
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    This extension provides a single new component format for vertex
715bd8deadSopenharmony_ci    arrays to read 4-component unsigned byte vertex attributes with a
725bd8deadSopenharmony_ci    BGRA component ordering.
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    OpenGL expects vertex arrays containing 4 unsigned bytes per
755bd8deadSopenharmony_ci    element to be in the RGBA, STRQ, or XYZW order (reading components
765bd8deadSopenharmony_ci    left-to-right in their lower address to higher address order).
775bd8deadSopenharmony_ci    Essentially the order the components appear in memory is the order
785bd8deadSopenharmony_ci    the components appear in the resulting vertex attribute vector.
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    However Direct3D has color (diffuse and specular) vertex arrays
815bd8deadSopenharmony_ci    containing 4 unsigned bytes per element that are in a BGRA order
825bd8deadSopenharmony_ci    (again reading components left-to-right in their lower address
835bd8deadSopenharmony_ci    to higher address order).  Direct3D calls this "ARGB" reading the
845bd8deadSopenharmony_ci    components in the opposite order (reading components left-to-right
855bd8deadSopenharmony_ci    in their higher address to lower address order).  This ordering is
865bd8deadSopenharmony_ci    generalized in the DirectX 10 by the DXGI_FORMAT_B8G8R8A8_UNORM
875bd8deadSopenharmony_ci    format.
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    For an OpenGL application to source color data from a vertex
905bd8deadSopenharmony_ci    buffer formatted for Direct3D's color array format conventions,
915bd8deadSopenharmony_ci    the application is forced to either:
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    1.  Rely on a vertex program or shader to swizzle the color components
945bd8deadSopenharmony_ci        from the BGRA to conventional RGBA order.
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    2.  Re-order the color data components in the vertex buffer from
975bd8deadSopenharmony_ci        Direct3D's native BGRA order to OpenGL's native RGBA order.
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    Neither option is entirely satisfactory.
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci    Option 1 means vertex shaders have to be re-written to source colors
1025bd8deadSopenharmony_ci    differently.  If the same vertex shader is used with vertex arrays
1035bd8deadSopenharmony_ci    configured to source the color as 4 floating-point color components,
1045bd8deadSopenharmony_ci    the swizzle for BGRA colors stored as 4 unsigned bytes is no longer
1055bd8deadSopenharmony_ci    appropriate.  The shader's swizzling of colors becomes dependent on
1065bd8deadSopenharmony_ci    the type and number of color components.  Ideally the vertex shader
1075bd8deadSopenharmony_ci    should be independent from the format and component ordering of the
1085bd8deadSopenharmony_ci    data it sources.
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    Option 2 is expensive because vertex buffers may have to be
1115bd8deadSopenharmony_ci    reformatted prior to use.  OpenGL treats the memory for vertex arrays
1125bd8deadSopenharmony_ci    (whether client-side memory or buffer objects) as essentially untyped
1135bd8deadSopenharmony_ci    memory and vertex arrays can be stored separately, interleaved,
1145bd8deadSopenharmony_ci    or even interwoven (where multiple arrays overlap with differing
1155bd8deadSopenharmony_ci    strides and formats).
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    Rather than force a re-ordering of either vertex array components
1185bd8deadSopenharmony_ci    in memory or a vertex array format-dependent re-ordering of vertex
1195bd8deadSopenharmony_ci    shader inputs, OpenGL can simply provide a vertex array format that
1205bd8deadSopenharmony_ci    matches the Direct3D color component ordering.
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    This approach mimics that of the EXT_bgra extension for pixel and
1235bd8deadSopenharmony_ci    texel formats except for vertex instead of image data.
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ciNew Procedures and Functions
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    None
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ciNew Tokens
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci    Accepted by the <size> parameter of ColorPointer,
1325bd8deadSopenharmony_ci    SecondaryColorPointer, and VertexAttribPointer:
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci        BGRA                           0x80E1
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 2.1 Specification (OpenGL Operation)
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ci -- Section 2.8 "Vertex Arrays" (page 24)
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    Replace the sentence beginning "size, when present, ..." with:
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    "size, when present, indicates the number of values per vertex that
1435bd8deadSopenharmony_ci    are stored in the array as well as their component ordering."
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    Add these final sentences to the end of the same paragraph:
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    "The error INVALID_VALUE is generated if size is BGRA and type is
1485bd8deadSopenharmony_ci    not UNSIGNED_BYTE.  The error INVALID_VALUE is generated by
1495bd8deadSopenharmony_ci    VertexAttribPointer if size is BGRA and normalized is FALSE."
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    Edit Table 2.4 "Vertex array sizes (values per vertex) and data types"
1525bd8deadSopenharmony_ci    as follows:
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    *  Rename the "Sizes" column to "Sizes and component ordering".
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci    *  Add "BGRA" to the "Sizes and component order" column of the
1575bd8deadSopenharmony_ci       following rows:  ColorPointer, SecondaryColorPointer, and
1585bd8deadSopenharmony_ci       VertexAttribPointer.
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci       These are the commands capable of accepting normalized
1615bd8deadSopenharmony_ci       coordinates and accepting 4 for "size" plus the special case of
1625bd8deadSopenharmony_ci       SecondaryColorPointer command.
1635bd8deadSopenharmony_ci
1645bd8deadSopenharmony_ci    *  Add the following sentence to the end of the table caption:
1655bd8deadSopenharmony_ci       "If the size parameter is BGRA, the vertex array values are always
1665bd8deadSopenharmony_ci       normalized irrespective of the Normalized column."
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci    "The one, two, three, or four values in an array that correspond to
1695bd8deadSopenharmony_ci    a single vertex comprise an array element.  When the BGRA token is
1705bd8deadSopenharmony_ci    specified for size, it indicates four values.  The values within
1715bd8deadSopenharmony_ci    each array element are stored sequentially in memory.  However if
1725bd8deadSopenharmony_ci    the size is specified with BGRA, the first, second, third, and fourth
1735bd8deadSopenharmony_ci    values of each array element are read from the third, second, first,
1745bd8deadSopenharmony_ci    and fourth values in memory respectively."
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.1 Specification (Rasterization)
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    None
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.1 Specification (Per-Fragment
1815bd8deadSopenharmony_ciOperations and the Frame Buffer)
1825bd8deadSopenharmony_ci
1835bd8deadSopenharmony_ci    None
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 2.1 Specification (Special
1865bd8deadSopenharmony_ciFunctions)
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci    None
1895bd8deadSopenharmony_ci
1905bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.1 Specification (State and
1915bd8deadSopenharmony_ciState Requests)
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci    None
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    None
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ciAdditions to the OpenGL Shading Language
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci    None
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ciGLX Protocol
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci    None
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ciErrors
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci    The error INVALID_VALUE is generated when ColorPointer,
2105bd8deadSopenharmony_ci    SecondaryColorPointer, or VertexAttribPointer is
2115bd8deadSopenharmony_ci    called with size set to BGRA and type is not UNSIGNED_BYTE.
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci    The error INVALID_VALUE is generated when VertexAttribPointer is
2145bd8deadSopenharmony_ci    called with size set to BGRA and normalized is FALSE.
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ciDependencies on EXT_vertex_array
2175bd8deadSopenharmony_ci
2185bd8deadSopenharmony_ci    This extension's additional behavior for ColorPointer apply to
2195bd8deadSopenharmony_ci    ColorPointerEXT too.
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ciDependencies on EXT_secondary_color
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci    This extension's additional behavior for SecondaryColorPointer
2245bd8deadSopenharmony_ci    applies to SecondaryColorPointerEXT too.
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ciDependencies on NV_vertex_program
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci    This extension's additional behavior for VertexAttribPointer applies
2295bd8deadSopenharmony_ci    to VertexAttribPointerNV too.
2305bd8deadSopenharmony_ci
2315bd8deadSopenharmony_ciDependencies on ARB_vertex_program and ARB_vertex_shader
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    This extension's additional behavior for VertexAttribPointer applies
2345bd8deadSopenharmony_ci    to VertexAttribPointerARB too.
2355bd8deadSopenharmony_ci
2365bd8deadSopenharmony_ciDependencies on ARB_compatibility and OpenGL 3.1 (or later):
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    If using an OpenGL 3.1 (or later) and ARB_compatibility is not supported
2395bd8deadSopenharmony_ci    ignore all references to ColorPointer and SecondaryColorPointer and the
2405bd8deadSopenharmony_ci    associated state and queries.
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ciNew State
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    Change tables 6.6 and 6.7 to fix Type column by making the type
2455bd8deadSopenharmony_ci    a k-valued integer where k is 3, 2, and 5 for color, secondary,
2465bd8deadSopenharmony_ci    and vertex attrib arrays respectively.
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ci(table 6.6, "Vertex Array Data", p. 271)
2495bd8deadSopenharmony_ci    Get Value                   Type  Get Command  Initial Value  Description            Sec Attribute
2505bd8deadSopenharmony_ci    ---------                   ----  -----------  -------------  ---------------------  --- ---------
2515bd8deadSopenharmony_ci    COLOR_ARRAY_SIZE            Z3    GetIntegerv  4              Color components       2.8 vertex-array
2525bd8deadSopenharmony_ci                                                                  per vertex
2535bd8deadSopenharmony_ci    SECONDARY_COLOR_ARRAY_SIZE  Z2    GetIntegerv  3              Secondary color        2.8 vertex-array
2545bd8deadSopenharmony_ci                                                                  components per vertex
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci(table 6.7, "Vertex Array Data (cont.)", p. 272)
2575bd8deadSopenharmony_ci    Get Value                   Type      Get Command  Initial Value  Description            Sec Attribute
2585bd8deadSopenharmony_ci    ---------                   --------  -----------  -------------  ---------------------  --- ---------
2595bd8deadSopenharmony_ci    VERTEX_ATTRIB_ARRAY_SIZE    16* x Z5  GetIntegerv  4              Vertex attrib array    2.8 vertex-array
2605bd8deadSopenharmony_ci                                                                      size
2615bd8deadSopenharmony_ci
2625bd8deadSopenharmony_ciNew Implementation Dependent State
2635bd8deadSopenharmony_ci
2645bd8deadSopenharmony_ci    None
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ciIssues
2675bd8deadSopenharmony_ci
2685bd8deadSopenharmony_ci    1.  What should this extension be called?
2695bd8deadSopenharmony_ci
2705bd8deadSopenharmony_ci        RESOLVED:  ARB_vertex_array_bgra
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        Because the extension adds a new "vertex array" format with the
2735bd8deadSopenharmony_ci        "bgra" component ordering and assuming a normalized representation
2745bd8deadSopenharmony_ci        as BGRA with UNSIGNED_BYTE would provide for image data. This
2755bd8deadSopenharmony_ci        extension is the ARB-ratified version of EXT_vertex_array_bgra.
2765bd8deadSopenharmony_ci
2775bd8deadSopenharmony_ci    2.  How should the vertex array API be changed?
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci        RESOLVED:  Allow BGRA as a valid token for the size field of
2805bd8deadSopenharmony_ci        vertex array specification commands.  While the size parameter
2815bd8deadSopenharmony_ci        is of type GLint, the valid sizes are in the 1 to 4 range so
2825bd8deadSopenharmony_ci        the GL_BGRA token is easily distinguished from the existing
2835bd8deadSopenharmony_ci        small integer values.
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci        This mimics the way OpenGL 1.1 changed the "components" field
2865bd8deadSopenharmony_ci        of glTexImage1D and glTexImage2D to specify an internalformat
2875bd8deadSopenharmony_ci        rather than simply a number of components from 1 to 4.
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci        This approach has the advantage of not adding any new commands
2905bd8deadSopenharmony_ci        or tokens since the GL_BGRA token already exists.
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci    3.  What vertex array specification commands should accept the new
2935bd8deadSopenharmony_ci        BGRA vertex array format for their size parameter?
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci        RESOLVED:  All vertex array specification commands which accept 4
2965bd8deadSopenharmony_ci        as a valid size plus the glSecondaryColorPointer command because
2975bd8deadSopenharmony_ci        Direct3D allows a BGRA-ordered secondary color (its specular
2985bd8deadSopenharmony_ci        vertex attribute) to be specified.
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci        Because DirectX 10 makes its formats highly orthogonal and it
3015bd8deadSopenharmony_ci        allows a corresponding format (DXGI_FORMAT_B8G8R8A8_UNORM),
3025bd8deadSopenharmony_ci        the BGRA vertex array format should be similarly general.
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci    4.  Should a 4-component BGRA secondary color be allowed?
3055bd8deadSopenharmony_ci
3065bd8deadSopenharmony_ci        RESOLVED:  Yes.
3075bd8deadSopenharmony_ci
3085bd8deadSopenharmony_ci        DirectX 9 supports a 4-component secondary color.  All four
3095bd8deadSopenharmony_ci        components should be available to a vertex shader or vertex
3105bd8deadSopenharmony_ci        program.  Fixed-function operation without lighting enabled
3115bd8deadSopenharmony_ci        should pass through the secondary color alpha component.  However
3125bd8deadSopenharmony_ci        fixed-function lighting specifies its output secondary color alpha
3135bd8deadSopenharmony_ci        is always output as 1 and ignores the input secondary color alpha.
3145bd8deadSopenharmony_ci
3155bd8deadSopenharmony_ci    5.  So should 4 be allowed as a valid size parameter for
3165bd8deadSopenharmony_ci        glSecondaryColorPointer?
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci        RESOLVED:  Not for this extension.  We leave it to another
3195bd8deadSopenharmony_ci        extension or core revision could extend the secondary color to
3205bd8deadSopenharmony_ci        4 components.
3215bd8deadSopenharmony_ci
3225bd8deadSopenharmony_ci    6.  Should the BGRA vertex array format only work with the
3235bd8deadSopenharmony_ci        GL_UNSIGNED_BYTE type?
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ci        RESOLVED:  Yes.
3265bd8deadSopenharmony_ci
3275bd8deadSopenharmony_ci        This is consistent with Direct3D's use of the D3DCOLOR type which
3285bd8deadSopenharmony_ci        is defined with a BGRA ordering and 8-bit normalized components.
3295bd8deadSopenharmony_ci
3305bd8deadSopenharmony_ci    7.  How should the BGRA vertex array format's normalized behavior
3315bd8deadSopenharmony_ci        interact with the "normalized" parameter of glVertexAttribPointer?
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ci        RESOLVED:  Since BGRA implies normalization, it should be an
3345bd8deadSopenharmony_ci        error to request BGRA with the normalized parameter set to false.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci        This ensures the following statement in the caption of table 2.4
3375bd8deadSopenharmony_ci        remains true:  "For generic vertex attributes, fixed-point data
3385bd8deadSopenharmony_ci        are normalized if and only if the VertexAttribPointer normalized
3395bd8deadSopenharmony_ci        flag is set."
3405bd8deadSopenharmony_ci
3415bd8deadSopenharmony_ci    8.  Should the glVertexAttribIPointerEXT command accept GL_BGRA for
3425bd8deadSopenharmony_ci        its size parameter?
3435bd8deadSopenharmony_ci
3445bd8deadSopenharmony_ci        RESOLVED:  No.  Because the BGRA vertex array format implies
3455bd8deadSopenharmony_ci        normalized component values, that is inconsistent with providing
3465bd8deadSopenharmony_ci        integer vertex attributes.
3475bd8deadSopenharmony_ci
3485bd8deadSopenharmony_ci    9.  Should this apply to glVertexPointer?
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci        RESOLVED:  No.  glVertexPointer doesn't support GL_UNSIGNED_BYTE
3515bd8deadSopenharmony_ci        as a type so GL_BGRA doesn't make sense.
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    10. To what vertex arrays should this extension apply?
3545bd8deadSopenharmony_ci
3555bd8deadSopenharmony_ci        RESOLVED:  Just primary color (glColorPointer), secondary
3565bd8deadSopenharmony_ci        color (glSecondaryColorPointer), and generic vertex attribs
3575bd8deadSopenharmony_ci        (glVertexAttribPointer).
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci        The rationale is these are the formats that take 4 component
3605bd8deadSopenharmony_ci        attributes that can be normalized (making a special exception to
3615bd8deadSopenharmony_ci        treat the secondary color array as having 4 components for the
3625bd8deadSopenharmony_ci        purpose of BGRA support to match Direct3D).  Texture coordinate
3635bd8deadSopenharmony_ci        sets and vertex positions are not normalized.  Normals are
3645bd8deadSopenharmony_ci        normalized but only 4 coordinates.
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci    11. What Direct3D 9 functionality provides BGRA vertex arrays?
3675bd8deadSopenharmony_ci
3685bd8deadSopenharmony_ci        You can specify BGRA vertex arrays with either Flexible Vertex
3695bd8deadSopenharmony_ci        Formats (FVFs) or a Direct3D 9 Vertex Declaration.
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci        The FVF formats are D3DFVF_DIFFUSE and D3DFVF_SPECULAR.
3725bd8deadSopenharmony_ci
3735bd8deadSopenharmony_ci        The Vertex Declaration declaration data type is
3745bd8deadSopenharmony_ci        D3DDECLTYPE_D3DCOLOR.
3755bd8deadSopenharmony_ci
3765bd8deadSopenharmony_ciRevision History
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci    Rev.    Date    Author     Changes
3795bd8deadSopenharmony_ci    ----  -------- ---------  ----------------------------------------
3805bd8deadSopenharmony_ci      1   5/19/09  dgkoch     copy & rename from EXT version rev 5.
3815bd8deadSopenharmony_ci      2   6/26/09  dgkoch     add interactions with ARB_compatibility
3825bd8deadSopenharmony_ci                              correct Type and Initial values columns in
3835bd8deadSopenharmony_ci                              table 6.7
384