|
|
Name
PGI_vertex_hints
Name Strings
GL_PGI_vertex_hints
Version
$Date: 1996/04/12 22:54:16 $ $Revision: 1.6 $
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
|