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 parameter of Enable, Disable, IsEnabled, and by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: INDEX_MATERIAL_EXT Accepted by the 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 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); is one of FRONT, BACK, or FRONT_AND_BACK, indicating whether the front material, back material, or both are affected by the current index. 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 is not FRONT, BACK, or FRONT_AND_BACK. INVALID_ENUM is generated if IndexMaterial parameter 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