| 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 |