glColorTableEXT

NAME

glColorTableEXT - define a color lookup table

C SPECIFICATION

void glColorTableEXT(GLenum target,
                     GLenum internalformat,
                     GLsizei width,
                     GLenum format,
                     GLenum type,
                     const GLvoid *table)

PARAMETERS

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 one­dimensional array of pixel data that is processed to build the color table.

DESCRIPTION

glColorTableEXT is used to specify a color lookup table when used with target set to either GL_COLOR_TABLE_EXT, GL_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT or GL_TEXTURE_COLOR_TABLE_EXT. Use glDisable with argument GL_COLOR_TABLE_EXT, GL_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT, or GL_TEXTURE_COLOR_TABLE_EXT to enable and disable the corresponding 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 [0,1]. Each pixel is then converted to the internal format specified by internalformat. This conversion simply maps the component values of the pixel to the values included in the internal format (red, green, blue, alpha, luminance, and intensity). The mapping is as follows:

internalformat Red Green Blue Alpha Luminance Intensity
GL_ALPHA---A--
GL_LUMINANCE----R-
GL_LUMINANCE_ALPHA---AR-
GL_INTENSITY-----R
GL_RGBRGB---
GL_RGBARGBA--

Finally, the red, green, blue, alpha, luminance, and/or intensity components of the resulting pixels are stored in the color table. They form a one­dimensional table with indices in the range [0,width - 1].

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 non­proxy 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 [0,1]. The color components are rescaled to the size of the color lookup table to form an index. A subset of the components based on the internal format of the table are replaced by the table entry selected by that index.

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.

EXTENSIONS

Some routines and constants for this function are part of an extension, not part of the core GL command set. The following extension names must be present in the string returned by glGetString when called with argument GL_EXTENSIONS to use these routines and constants.
GL_EXT_422_pixels
GL_422_EXT, GL_422_REV_EXT, GL_422_AVERAGE_EXT, and GL_422_REV_AVERAGE_EXT are part of the EXT_422_pixels extension.

GL_EXT_bgra
GL_BGR_EXT and GL_BGRA_EXT are part of the EXT_bgra extension.

GL_EXT_color_table
glColorTableEXT, GL_COLOR_TABLE_EXT, GL_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT, GL_PROXY_COLOR_TABLE_EXT, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT, and GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT are part of the EXT_color_table extension.

GL_EXT_packed_pixels
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 are part of the EXT_packed_pixels extension.

GL_EXT_texture_color_table
GL_TEXTURE_COLOR_TABLE_EXT and GL_PROXY_TEXTURE_COLOR_TABLE_EXT are part of the EXT_texture_color_table extension.

ERRORS

GL_INVALID_ENUM is generated if target is not an accepted value.

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.

ASSOCIATED GETS

glGetColorTableEXT
glGetColorTableParameterEXT
glIsEnabled with argument GL_COLOR_TABLE_EXT, GL_POST_CONVOLUTION_COLOR_TABLE_EXT, GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT, or GL_TEXTURE_COLOR_TABLE_EXT

SEE ALSO

glBegin, glColorSubTableEXT, glEnd, glGetColorTableParameterEXT, glGetString, glPixelTransfer