blob: 02698e223baeebc10e6928730fc67d18f32d82c4 [file] [log] [blame]
Name
PGI_vertex_hints
Name Strings
GL_PGI_vertex_hints
Version
$Date: 1996/04/22 23:24:19 $ $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