XXX - Not complete yet!!!

Name

    EXT_index_func

Name Strings

    GL_EXT_index_func

Version

    $Date: 1996/11/21 00:52:23 $ $Revision: 1.3 $

Number

    95

Dependencies

    None

Overview

    This extension provides a way to discard fragments when a comparison
    between the fragment's index value and a reference index fails.  This
    may be used similarly to the alpha test which is available in RGBA mode.

New Procedures and Functions

    void IndexFuncEXT (enum func, float ref)

New Tokens

    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
    and GetDoublev:

        INDEX_TEST_EXT

    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
    GetFloatv, and GetDoublev:

        INDEX_TEST_FUNC_EXT
        INDEX_TEST_REF_EXT

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

    None

Additions to Chapter 3 of the 1.1 Specification (Rasterization)

    None

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

    A new section is added immediately following section 4.1.3 Alpha Test.

    Index Test

    This step applies only to color index mode.  The index test discards
    a fragment conditional on the outcome of a comparison between the
    incoming fragment's index value and a constant reference value.  The
    comparison is enabled or disabled with the generic Enable and Disable
    commands using the symbolic constant INDEX_TEST_EXT.  When disabled,
    it is as if the comparison always passes.  The test is controlled with

        void IndexFunc (enum func, float ref);
    
    <func> is a symbolic constant indicating the index test function; <ref>
    is a reference value.  <ref> is converted to a fixed-point value
    according to the rules given for a color index in section 2.13.9.  For
    purposes of the index test, the fragment's index value is also rounded
    to the nearest integer representable in the color index portion of the
    framebuffer.  The possible constants specifying the test function are
    NEVER, ALWAYS, LESS, LEQUAL, EQUAL, GEQUAL, GREATER, or NOTEQUAL,
    meaning pass the fragment never, always, if the fragment's index value
    is less than, less than or equal to, equal to, greater than, or not
    equal to the reference value, respectively.

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!!!

Errors

    INVALID_ENUM is generated if the <func> parameter of IndexFuncEXT
    is not one of NEVER, ALWAYS, LESS, LEQUAL, EQUAL, GEQUAL, GREATER, or
    NOTEQUAL.

    INVALID_OPERATION is generated if IndexFuncEXT is called between
    execution of Begin and corresponding execution of End.

New State
                                                                Initial
    Get Value                           Get Command     Type    Value   Attrib
    ---------                           -----------     ----    ------- ------

    INDEX_TEST_EXT                      IsEnabled       B       False   color-buffer/enable
    INDEX_TEST_FUNC_EXT                 GetFloatv       Z8      ALWAYS  color-buffer
    INDEX_TEST_REF_EXT                  GetFloatv       R       0       color-buffer

New Implementation Dependent State

    None
