void glColorTableEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)
target | Must be one of the following: GL_COLOR_TABLE_EXT, GL_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT, GL_TEXTURE_COLOR_TABLE_EXT, GL_PROXY_COLOR_TABLE_EXT, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT, or GL_PROXY_TEXTURE_COLOR_TABLE_EXT. |
internalformat | The internal format of the color table. The allowable values are GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_RGB, GL_RGB2, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12, and GL_RGBA16. |
width | The number of entries in the color lookup table specified by table. width must be positive and a power of two. |
format | The format of the pixel data. The allowable values are GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA, GL_BGR_EXT, GL_BGRA_EXT, GL_422_EXT, GL_422_REV_EXT, GL_422_AVERAGE_EXT, and GL_422_REV_AVERAGE_EXT. |
type | Specifies the data type for pixel data. The allowable values are GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2_EXT, GL_UNSIGNED_BYTE_2_3_3_REV_EXT, GL_UNSIGNED_SHORT_5_6_5_EXT, GL_UNSIGNED_SHORT_5_6_5_REV_EXT, GL_UNSIGNED_SHORT_4_4_4_4_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, GL_UNSIGNED_SHORT_5_5_5_1_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, GL_UNSIGNED_INT_8_8_8_8_EXT, GL_UNSIGNED_INT_8_8_8_8_REV_EXT, GL_UNSIGNED_INT_10_10_10_2_EXT, and GL_UNSIGNED_INT_2_10_10_10_REV_EXT. |
table | Pointer to a onedimensional array of pixel data that is processed to build the color table. |
glColorTableEXT builds a color lookup table from an array of pixels. The pixel array specified by width, format, type, and table is extracted from memory and processed just as if glDrawPixels were called with processing stopping after the final expansion to RGBA is completed.
The red, green, blue, and alpha components of each pixel are then scaled by the four
GL_COLOR_TABLE_SCALE_EXT parameters and biased by the four GL_COLOR_TABLE_BIAS_EXT
parameters. (Use glColorTableParameterEXT
to set the scale and bias parameters.) The component values are then clamped to the range
internalformat | Red | Green | Blue | Alpha | Luminance | Intensity |
---|---|---|---|---|---|---|
GL_ALPHA | - | - | - | A | - | - |
GL_LUMINANCE | - | - | - | - | R | - |
GL_LUMINANCE_ALPHA | - | - | - | A | R | - |
GL_INTENSITY | - | - | - | - | - | R |
GL_RGB | R | G | B | - | - | - |
GL_RGBA | R | G | B | A | - | - |
Finally, the red, green, blue, alpha, luminance, and/or intensity
components of the resulting pixels are stored in the color table. They
form a onedimensional table with indices in the range
If target is GL_PROXY_COLOR_TABLE_EXT, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT, or GL_PROXY_TEXTURE_COLOR_TABLE_EXT, glColorTableEXT recomputes and stores the values of the state variables GL_COLOR_TABLE_FORMAT_EXT, GL_COLOR_TABLE_WIDTH_EXT, GL_COLOR_TABLE_RED_SIZE_EXT, GL_COLOR_TABLE_GREEN_SIZE_EXT, GL_COLOR_TABLE_BLUE_SIZE_EXT, GL_COLOR_TABLE_ALPHA_SIZE_EXT, GL_COLOR_TABLE_LUMINANCE_SIZE_EXT, and GL_COLOR_TABLE_INTENSITY_SIZE_EXT. There is no effect on the image or state of any actual color table. If the specified color table is too large to be supported, then all the above state variables are set to zero. Otherwise, the color table could be supported by glColorTableEXT using the corresponding nonproxy target, and the state variables are set as if that target were being defined.
The state variables can be retrieved by calling glGetColorTableParameterEXT with the appropriate target. This allows the application to decide if a particular glColorTableEXT command would succeed, and determine what the resulting color table attributes would be.
If a color table is enabled and its width is non-zero, then its contents are used to replace a subset of the components of each RGBA pixel group, based on the internal format of the table.
Each pixel group's color components, RGBA, are in the range
When GL_COLOR_TABLE is enabled, the colors resulting from the pixel map operation (if it is enabled) are mapped by the color lookup table before being passed to the convolution operation. The colors resulting from the convolution operation are modified by the post convolution color lookup table when GL_POST_CONVOLUTION_COLOR_TABLE is enabled. These modified colors are then sent to the color matrix operation. Finally, if GL_POST_COLOR_MATRIX_COLOR_TABLE is enabled, the colors resulting from the color matrix operation are mapped by the post color matrix color lookup table.
GL_INVALID_ENUM is generated if internalformat is not an accepted value.
GL_INVALID_VALUE is generated if width is less than zero.
GL_INVALID_ENUM is generated if format is not an accepted value.
GL_INVALID_ENUM is generated if type is not an accepted value.
GL_TABLE_TOO_LARGE_EXT is generated if the requested color table is too large to be supported by the implementation, and target is not a proxy target.
GL_INVALID_OPERATION is generated if glColorTableEXT is executed between the execution of glEnd.