XXX - Not complete yet!!!

Name

    EXT_index_texture

Name Strings

    GL_EXT_index_texture

Version

    $Date: 1996/11/21 00:52:26 $ $Revision: 1.4 $

Number

    93

Dependencies

    EXT_paletted_texture is required

Overview

    This extends the definition of texturing so that it is supported
    in color index mode.  This extension builds on the notion of
    texture images which have color index internal formats which was
    introduced in EXT_paletted_texture.

    This extension also introduces a new texture environment function
    ADD which is useful for combining lighting and texturing in
    color index mode.

Issues

    * EXT_paletted_texture should probably have defined
        TEXTURE_BORDER_INDEX
        TEXTURE_INDEX_SIZE
      Should we go ahead and introduce them in this extension?

    * ADD is defined differently for RGBA mode in SGIX_texture_add_env
      Should we add TEXTURE_ENV_SHIFT and TEXTURE_ENV_OFFSET parameters
      so that the environment functions works similarly?  Probably not.

New Procedures and Functions

    None

New Tokens

    None

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

    None

Additions to Chapter 3 of the 1.1 Specification (Rasterization)

    In Section 3.8, the sentence "Texturing is specified only for RGBA
    mode; its use in color index mode is undefined." is deleted.  And
    the sentence "These details include specification of the image to
    be texture mapped, the means by which the image is filtered when
    applied to the primitive, and the function that determines what
    RGBA value is produced given a fragment color and an image value."
    is modified to read "...determine what RGBA or color index value
    is produced given a fragment color or index...".

    The remaining discussion of texturing is modified as per
    EXT_paletted_texture with the following modifications:

    The discussion of restrictions on the <internalFormat> parameter
    for CopyTexImage1D and CopyTexImage2D is modifies to read: "...except
    that <internalFormat> may not be specified as 1, 2, 3, or 4 nor may
    <internalFormat> be specified using one of the color index internal
    formats unless the GL is in color index mode."

    Use of texture palettes is supported in both RGBA mode and color
    index mode.  The texture palette is applied to color indexes extracted
    from the texture array only when the texture palette has a Luminance,
    Alpha, Luminance Alpha, Intensity, RGB, or RGBA internal format and
    the GL is in RGBA mode or when the texture palette has a color index
    internal format and the GL is in color index mode.  If both the
    texture image and the texture palette have color index internal
    formats and the GL is in RGBA mode, then the texture is inconsistent.

    In Section 3.8.5 "Texture Environments and Texture Functions", the
    sentence discussing possible environment parameters is modified to
    say: "...TEXTURE_ENV_MODE may be set to one of REPLACE, MODULATE,
    DECAL, BLEND, or ADD...".   Also Tables 3.10 and 3.11 are extended
    to include the following new row and column

        Cf is the index from the incoming fragment
        Ct is the filtered texture index
        Cv is the index computed by the texture environment function

    Base            REPLACE   MODULATE  DECAL     BLEND     ADD
    Internal Format Tex Func  Tex Func  Tex Func  Tex Func  Tex Func
    --------------- --------  --------  --------  --------  --------
    .               .         .         .         .         .
    .               .         .         .         .         undef
    .               .         .         .         .         .
    COLOR_INDEX     Cv=Ct     Cv=Cf*Ct  undef     undef     Cv=Cf+Ct
    .               .         .         .         .         .
    .               .         .         .         .         undef
    .               .         .         .         .         .

    In Section 3.8.6 "Texture Application", is modified to include
    a description of what happens in color index mode.  "In RGBA
    mode this function replaces the incoming fragment's R, G, B, and A
    values.  These are the color values passed to subsequent operations.
    In color index mode the resulting index is first masked (bitwise
    ANDed) with 2^n - 1, where n is the number of bits in a color in
    the color index buffer and then passed on to subsequent operations."

Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)

    None

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

    None

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

    None

Additions to the GLX Specification

    XXX - Not complete yet!!!

GLX Protocol

    XXX - Not complete yet!!!

Dependencies on EXT_paletted_texture

    EXT_paletted_texture is required.  This extension depends on the
    notion of color index internal formats for texture images as introduced
    by EXT_paletted_texture.

    EXT_paletted_texture is modified by this extension by allowing texture
    palettes to be used in color index mode.

Errors

    None

New State

    None

New Implementation Dependent State

    None
