blob: 8e177179427b9eddd97a83f39229140cd9acad43 [file] [log] [blame]
XXX - Not complete yet!!!
Name
EXT_index_material
Name Strings
GL_EXT_index_material
Version
$Date: 1996/11/21 00:52:24 $ $Revision: 1.4 $
Number
94
Dependencies
None
Overview
This extends color index lighting to include a way for the current
index to contribute to the color index produced by lighting. This
works much like ColorMaterial does for RGBA lighting by allowing
one or more color index material properties to be attached to the
current index.
The color index lighting formula is also modified so that the lit
color index may be bitwise shifted in order to allow greater control
when using lighting and fog together in color index mode.
New Procedures and Functions
void IndexMaterialEXT (enum face, enum mode )
New Tokens
Accepted by the <cap> parameter of Enable, Disable, IsEnabled,
and by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
INDEX_MATERIAL_EXT
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
INDEX_MATERIAL_PARAMETER_EXT
INDEX_MATERIAL_FACE_EXT
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
In Section 2.13.5 "Color Index Lighting", the discussion of color
index lighting is continued after the computation of the final color
index as follows:
Arithmetic on Color Indexes
After a final color index is computed, the index is converted to a
fixed-point value with an unspecified number of bits to the right
of the binary point, the nearest fixed-point value is selected.
Then the fixed-point value is shifted by |index_shift| bits, left
if index_shift is > 0 and right otherwise. In either case the
shift is zero filled. Then the signed integer offset index_offset
is added to the index. index_shift and index_offset are set using
the Material Command with <pname> set to INDEX_SHIFT and
INDEX_OFFSET respectively.
Index Material
It is possible to attach one or more color index material properties
to the current index, so that they continuously track its value. This
behavior is enabled and disabled by calling Enable or Disable with
the symbolic constant INDEX_MATERIAL_EXT. The command that controls
which of these modes is selected is
void IndexMaterial (enum face, enum mode);
<face> is one of FRONT, BACK, or FRONT_AND_BACK, indicating whether
the front material, back material, or both are affected by the current
index. <mode> must be INDEX_OFFSET. The replacements made to
material properties are permanent; the replaced values remain until
changed by either sending a new index or by setting a new material
value when IndexMaterial is not currently enabled to override that
particular value. When INDEX_MATERIAL is enabled, the indicated
parameter or parameters always track the current index.
Section 2.13.6 "Clamping or Masking" is modified slightly as
follows: "For a color index, if lighting is enabled, the color index
is already in fixed-point, otherwise, the index is first converted
to fixed-point..."
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)
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!!!
Errors
INVALID_ENUM is generated if IndexMaterial parameter <face> is not FRONT,
BACK, or FRONT_AND_BACK.
INVALID_ENUM is generated if IndexMaterial parameter <mode> is not
INDEX_OFFSET.
INVALID_OPERATION is generated if IndexMaterial is called between
execution of Begin and the corresponding execution of End.
New State
Initial
Get Value Get Command Type Value Attrib
--------- ----------- ---- ------- ------
INDEX_MATERIAL_EXT IsEnabled B False lighting/enable
INDEX_MATERIAL_PARAMETER_EXT GetIntegerv Z1 INDEX_OFFSET lighting
INDEX_MATERIAL_FACE_EXT GetIntegerv Z3 FRONT_AND_BACK lighting
INDEX_SHIFT GetMaterialfv 2 x R 0 lighting
INDEX_OFFSET GetMaterialfv 2 x R 0 lighting
New Implementation Dependent State
None