Name

    EXT_abgr

Name Strings

    GL_EXT_abgr

Version

    $Date: 1995/03/31 04:40:18 $ $Revision: 1.10 $

Number

    1

Dependencies

    None

Overview

    EXT_abgr extends the list of host-memory color formats.  Specifically,
    it provides a reverse-order alternative to image format RGBA.  The ABGR
    component order matches the cpack Iris GL format on big-endian machines.

New Procedures and Functions

    None

New Tokens
        
    Accepted by the <format> parameter of DrawPixels, GetTexImage,
    ReadPixels, TexImage1D, and TexImage2D:

        ABGR_EXT                     0x8000

Additions to Chapter 2 of the GL Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the GL Specification (Rasterization)

    One entry is added to table 3.5 (DrawPixels and ReadPixels formats).
    The new table is:

                                                                        Target
        Name                    Type            Elements                Buffer
        ----                    ----            --------                ------
        COLOR_INDEX             Index           Color Index             Color
        STENCIL_INDEX           Index           Stencil value           Stencil
        DEPTH_COMPONENT         Component       Depth value             Depth
        RED                     Component       R                       Color
        GREEN                   Component       G                       Color
        BLUE                    Component       B                       Color
        ALPHA                   Component       A                       Color
        RGB                     Component       R, G, B                 Color
        RGBA                    Component       R, G, B, A              Color
        LUMINANCE               Component       Luminance value         Color
        LUMINANCE_ALPHA         Component       Luminance value, A      Color
        ABGR_EXT                Component       A, B, G, R              Color

        Table 3.5: DrawPixels and ReadPixels formats.  The third column
        gives a description of and the number and order of elements in a
        group.

Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
and the Framebuffer)

    The new format is added to the discussion of Obtaining Pixels from the
    Framebuffer.  It should read " If the <format> is one of RED, GREEN,
    BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, and
    the GL is in color index mode, then the color index is obtained."

    The new format is added to the discussion of Index Lookup.  It should
    read "If <format> is one of RED, GREEN, BLUE, ALPHA, RGB, RGBA,
    ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, then the index is used to
    reference 4 tables of color components: PIXEL_MAP_I_TO_R,
    PIXEL_MAP_I_TO_G, PIXEL_MAP_I_TO_B, and PIXEL_MAP_I_TO_A."

Additions to Chapter 5 of the GL Specification (Special Functions)

    None

Additions to Chapter 6 of the GL Specification (State and State Requests)

    None

Additions to the GLX Specification

    None

GLX Protocol

    One entry is added to tables 1 and 5 in the GLX Protocol Specification:

        format                          encoding
        ------                          --------
        GL_ABGR_EXT                     0x8000

    Table A.2 is also extended:

        format                          nelements
        ------                          --------
        GL_ABGR_EXT                     4


Errors

    None

New State

    None

New Implementation Dependent State

    None
