Name

    PGI_vertex_hints

Name Strings

    GL_PGI_vertex_hints

Version

    $Date: 2005/06/02 18:12:31 $ $Revision: 1.1 $

Number

    76

Dependencies

    None

Overview

    The extension allows the app to give hints regarding what kinds of
    OpenGL function calls will happen between Begin/End pairs.

New Procedures and Functions

    None

New Tokens

    Accepted by the <target> parameters of Hint and HintPGI:

        VERTEX_DATA_HINT_PGI               107050
        VERTEX_CONSISTENT_HINT_PGI         107051
        MATERIAL_SIDE_HINT_PGI             107052
        MAX_VERTEX_HINT_PGI                107053

    Accepted by the <mode> parameters of Hint and HintPGI:

        COLOR3_BIT_PGI                  0x00010000
        COLOR4_BIT_PGI                  0x00020000
        EDGEFLAG_BIT_PGI                0x00040000
        INDEX_BIT_PGI                   0x00080000
        MAT_AMBIENT_BIT_PGI             0x00100000
        MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
        MAT_DIFFUSE_BIT_PGI             0x00400000
        MAT_EMISSION_BIT_PGI            0x00800000
        MAT_COLOR_INDEXES_BIT_PGI       0x01000000
        MAT_SHININESS_BIT_PGI           0x02000000
        MAT_SPECULAR_BIT_PGI            0x04000000
        NORMAL_BIT_PGI                  0x08000000
        TEXCOORD1_BIT_PGI               0x10000000
        TEXCOORD2_BIT_PGI               0x20000000
        TEXCOORD3_BIT_PGI               0x40000000
        TEXCOORD4_BIT_PGI               0x80000000
        VERTEX23_BIT_PGI                0x00000004
        VERTEX4_BIT_PGI                 0x00000008

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

    None

Additions to Chapter 3 of the 1.0 Specification (Rasterization)

    None

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

    None

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

    Functions Hint and HintPGI accept the following targets and modes:

    [All hints are subject to Push/Pop with the HINT_BIT attributes.]

    <target> = VERTEX_DATA_HINT_PGI

    This hint indicates which GL calls might occur between Begin/End pairs.
    If <mode> is any of FALSE, then the hint is "disabled" -- this means
    the application is not making any predictions about which GL calls
    might occur between Begin/End pairs.  Otherwise, <mode> must be a
    bitwise OR of the following bits:

        COLOR3_BIT_PGI                     Color3*
        COLOR4_BIT_PGI                     Color4*
        EDGEFLAG_BIT_PGI                   EdgeFlag*
        INDEX_BIT_PGI                      Index*
        MAT_AMBIENT_BIT_PGI                Material*(pname=AMBIENT)
        MAT_AMBIENT_AND_DIFFUSE_BIT_PGI    Material*(pname=AMBIENT_AND_DIFFUSE)
        MAT_DIFFUSE_BIT_PGI                Material*(pname=DIFFUSE)
        MAT_EMISSION_BIT_PGI               Material*(pname=EMISSION)
        MAT_COLOR_INDEXES_BIT_PGI          Material*(pname=COLOR_INDEXES)
        MAT_SHININESS_BIT_PGI              Material*(pname=SHININESS)
        MAT_SPECULAR_BIT_PGI               Material*(pname=SPECULAR)
        NORMAL_BIT_PGI                     Normal*
        TEXCOORD1_BIT_PGI                  TexCoord1*
        TEXCOORD2_BIT_PGI                  TexCoord2*
        TEXCOORD3_BIT_PGI                  TexCoord3*
        TEXCOORD4_BIT_PGI                  TexCoord4*
        VERTEX23_BIT_PGI                   Vertex[23]*
        VERTEX4_BIT_PGI                    Vertex4

    At least one of the bits VERTEX23_BIT_PGI or VERTEX4_BIT_PGI must be
    set in <mode>.

    Each bit above indicates that one of the associated OpenGL functions
    might occur between Begin/End pairs.  If <mode> does not contain a
    given bit, then GL may assume that associated functions will not occur
    between Begin/End pairs -- in this case, behavior of these functions
    is undefined.  (But the functions will not cause program termination.)  

    <target> = VERTEX_CONSISTENT_HINT_PGI

    This hint indicates that OpenGL function calls will occur
    consistently between Begin/End pairs.  If <mode> is either
    TRUE or FASTEST, then the application effectively is making
    the following assertion:  Between Begin/End pairs, if any of
    the following functions -- Color, EdgeFlag, Index, Material,
    Normal, TexCoord -- occurs before one Vertex call, then it
    will occur before all Vertex calls.  (Where "before" means the
    function will occur between the current Vertex function and the
    previous Vertex of Begin function.)  If <mode> is NICEST, DONT_CARE,
    or FALSE, the application is asserting that any sequence of 
    functions might occur between Begin/End pairs.

    If both VERTEX_CONSISTENT_HINT_PGI and  VERTEX_DATA_HINT_PGI are
    enabled, then GL further assumes that any functions indicated in
    VERTEX_DATA_HINT_PGI will be called before each vertex call.  When
    a single bit in VERTEX_DATA_HINT_PGI indicates a group of possible
    functions, GL assumes that at least one function from the group will
    be called before each Vertex function between Begin/End pairs.

    <target> = MAX_VERTEX_HINT_PGI

    This hint indicates the maximum number of Vertex functions which
    will occur between Begin/End pairs.  If <mode> is FALSE then the
    hint is "disabled" -- any number of Vertex functions might occur
    between Begin/End pairs.  However, if <mode> is any value greater
    than 0, then the application is asserting that at most that number
    of Vertex functions will occur between Begin/End pairs.  In this
    case, if the application exceeds the promised number of Vertex
    calls, program termination may occur.  Negative numbers also
    disable the hint.

    <target> = MATERIAL_SIDE_HINT_PGI

    This hint indicates which <face> paramters will occur for any
    Material functions called between Begin/End pairs.  If <mode>
    is any of FALSE, DONT_CARE, NICEST, then this hint is "disabled" --
    any <face> parameters might occur in Material functions called
    between Begin/End pairs.  If <mode> is FRONT, BACK, or
    FRONT_AND_BACK, then only the given value will be used in
    Material functions called between Begin/End pairs.  If <mode>
    is TRUE or FASTEST, then only a single (unspecified) <face>
    parameter will be used in Material functions called between
    Begin/End pairs.

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

    None

Additions to the GLX Specification

    None

GLX Protocol

    None

Interactions with PGI_misc_hints

    If the PGI_misc_hints extension is available, then the hints
    described above can be used through the HintPGI client function.

    If PGI_misc_hints is not avialable, then the hints above must
    be used through the usual Hint function.

Errors

    INVALID_VALUE is generated if <target> for Hint or HintPGI is
    VERTEX_DATA_HINT_PGI and <mode> is not FALSE or some combination
    of the bits xxx_BIT_PGI.  Also, if <mode> does not contain
    VERTEX23_BIT_PGI or VERTEX4_BIT_PGI (or both), then INVALID_VALUE
    is generated.

    INVALID_ENUM is generated if <target> for Hint or HintPGI is
    VERTEX_CONSISTENT_HINT_PGI and <mode> is not FASTEST, NICEST,
    DONT_CARE, TRUE, or FALSE

    INVALID_VALUE is generated if <target> for Hint or HintPGI is
    MAX_VERTEX_HINT_PGI and <mode> is a negative number.

    INVALID_ENUM is generated if <target> for Hint or HintPGI is
    MATERIAL_SIDE_HINT_PGI and <mode> is not FASTEST, NICEST,
    DONT_CARE, TRUE, FALSE, FRONT, BACK, or FRONT_AND_BACK.

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

    VERTEX_DATA_HINT_PGI                GetIntegerv      Z       FALSE    

    VERTEX_CONSISTENT_HINT_PGI          GetIntegerv      Z       FALSE    

    MAX_VERTEX_HINT_PGI                 GetIntegerv      Z       FALSE    

    MATERIAL_SIDE_HINT_PGI              GetIntegerv      Z       FALSE    

New Implementation Dependent State

    None
