glcolortablesgi - Man Page






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



NAME
     glColorTableSGI - define a	color lookup table


C SPECIFICATION
     void glColorTableSGI( GLenum target,
			   GLenum internalformat,
			   GLsizei width,
			   GLenum format,
			   GLenum type,
			   const GLvoid	*table )


PARAMETERS
     target	     Must be GL_TEXTURE_COLOR_TABLE_SGI, GL_COLOR_TABLE_SGI,
		     GL_POST_CONVOLUTION_COLOR_TABLE_SGI,
		     GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI,
		     GL_PROXY_TEXTURE_COLOR_TABLE_SGI,
		     GL_PROXY_COLOR_TABLE_SGI,
		     GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI,	or
		     GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI.

     internalformat  The internal format of the	color table.  The allowable
		     values are	GL_ALPHA, GL_ALPHA4_EXT, GL_ALPHA8_EXT,
		     GL_ALPHA12_EXT, GL_ALPHA16_EXT, GL_LUMINANCE,
		     GL_LUMINANCE4_EXT,	GL_LUMINANCE8_EXT, GL_LUMINANCE12_EXT,
		     GL_LUMINANCE16_EXT, GL_LUMINANCE_ALPHA,
		     GL_LUMINANCE4_ALPHA4_EXT, GL_LUMINANCE6_ALPHA2_EXT,
		     GL_LUMINANCE8_ALPHA8_EXT, GL_LUMINANCE12_ALPHA4_EXT,
		     GL_LUMINANCE12_ALPHA12_EXT, GL_LUMINANCE16_ALPHA16_EXT,
		     GL_INTENSITY_EXT, GL_INTENSITY4_EXT, GL_INTENSITY8_EXT,
		     GL_INTENSITY12_EXT, GL_INTENSITY16_EXT, GL_RGB,
		     GL_RGB2_EXT, GL_RGB4_EXT, GL_RGB5_EXT, GL_RGB8_EXT,
		     GL_RGB10_EXT, GL_RGB12_EXT, GL_RGB16_EXT, GL_RGBA,
		     GL_RGBA2_EXT, GL_RGBA4_EXT, GL_RGB5_A1_EXT, GL_RGBA8_EXT,
		     GL_RGB10_A2_EXT, GL_RGBA12_EXT, and GL_RGBA16_EXT.

     width	     The number	of entries in the color	lookup table specified
		     by	table.

     format	     The format	of the pixel data in table.  The allowable
		     values are	GL_ALPHA, GL_INTENSITY,	GL_LUMINANCE,
		     GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA, and GL_ABGR_EXT.

     type	     The type of the pixel data	in table.  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_SHORT_4_4_4_4_EXT,
		     GL_UNSIGNED_SHORT_5_5_5_1_EXT,
		     GL_UNSIGNED_INT_8_8_8_8_EXT, and
		     GL_UNSIGNED_INT_10_10_10_2_EXT.



									Page 1






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



     table	     Pointer to	a one-dimensional array	of pixel data that is
		     processed to build	the color table.

DESCRIPTION
     glColorTableSGI is	part of	the SGI_color_table extension, and is also
     used by the SGI_texture_color_table extension.

     glColorTableSGI may be used in two	ways: to test the actual size and
     color resolution of a lookup table	given a	particular set of parameters,
     or	to load	the contents of	a color	lookup table.  Use the targets
     GL_PROXY_*	for the	first case and the other targets for the second	case.

     If	target is GL_TEXTURE_COLOR_TABLE_SGI, GL_COLOR_TABLE_SGI,
     GL_POST_CONVOLUTION_COLOR_TABLE_SGI, or
     GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI, glColorTableSGI 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, but processing stops after the final
     expansion to RGBA is completed.

     The four scale parameters and the four bias parameters that are defined
     for the table are then used to scale and bias the R, G, B,	and A
     components	of each	pixel.	(Use glTexParameter to set the scale and bias
     parameters	for the	texture	color table.  Use glColorTableParameterSGI, to
     set the scale and bias parameters for the other color tables.)

     Next, the R, G, B,	and A values are 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 (R, G, B, and A) to the values included in the internal format
     (red, green, blue,	alpha, luminance, and intensity).  The mapping is as
     follows:

     _________________________________________________________________________
     |Internal Format	   Red	 Green	 Blue	Alpha	Luminance   Intensity |
     |________________________________________________________________________|
     |GL_ALPHA					  A			      |
     |GL_LUMINANCE					    R		      |
     |GL_LUMINANCE_ALPHA			  A	    R		      |
     |GL_INTENSITY_EXT							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 one-dimensional table with indices in the range [0,	width -	1].

     If	target is GL_PROXY_*, glColorTableSGI recomputes and stores the	values
     of	the proxy color	table's	state variables	GL_COLOR_TABLE_FORMAT_SGI,
     GL_COLOR_TABLE_WIDTH_SGI, GL_COLOR_TABLE_RED_SIZE_SGI,
     GL_COLOR_TABLE_GREEN_SIZE_SGI, GL_COLOR_TABLE_BLUE_SIZE_SGI,



									Page 2






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



     GL_COLOR_TABLE_ALPHA_SIZE_SGI, GL_COLOR_TABLE_LUMINANCE_SIZE_SGI, and
     GL_COLOR_TABLE_INTENSITY_SIZE_SGI.	 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 proxy state variables listed above
     are set to	zero.  Otherwise, the color table could	be supported by
     glColorTableSGI using the corresponding non-proxy target, and the proxy
     state variables are set as	if that	target were being defined.

     The proxy state variables can be retrieved	by calling
     glGetColorTableParameterSGI with a	target of GL_PROXY_*.  This allows the
     application to decide if a	particular glColorTableSGI 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 has color	components (R, G, B, A)	which are in the range
     [0.0, 1.0].  The color components are rescaled to the size	of the color
     lookup table to form an index.  Then a subset of the components based on
     the internal format of the	table are replaced by the table	entry selected
     by	that index.  If	the color components and contents of the table are
     represented as follows:

		___________________________________________________
		|Representation		      Meaning		   |
		|__________________________________________________|
		|      r	  Table	index computed from R	   |
		|      g	  Table	index computed from G	   |
		|      b	  Table	index computed from B	   |
		|      a	  Table	index computed from A	   |
		|__________________________________________________|
		|     L[i]	  Luminance value at table index i |
		|     I[i]	  Intensity value at table index i |
		|     R[i]	  Red value at table index i	   |
		|     G[i]	  Green	value at table index i	   |
		|     B[i]	  Blue value at	table index i	   |
		|     A[i]	  Alpha	value at table index i	   |
		|__________________________________________________|

     Then the result of	color table lookup is as follows:













									Page 3






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



	     ________________________________________________________
	      |			     | Resulting Texture Components  |
	      |Table Internal Format | R       G       B       A     |
	      |______________________________________________________|
	      |GL_ALPHA		       R       G       B       A[a]  |
	      |GL_LUMINANCE	       L[r]    L[g]    L[b]    At    |
	      |GL_LUMINANCE_ALPHA      L[r]    L[g]    L[b]    A[a]  |
	      |GL_INTENSITY	       I[r]    I[g]    I[b]    I[a]  |
	      |GL_RGB		       R[r]    G[g]    B[b]    A     |
	      |GL_RGBA		       R[r]    G[g]    B[b]    A[a]  |
	      |______________________________________________________|

     When GL_TEXTURE_COLOR_TABLE_SGI is	enabled, the filtered colors resulting
     from texturing are	mapped by the texture color lookup table. The result
     of	the table lookup is passed to the texture environment function to be
     applied to	pixel fragments.

     The texture color table can be used to expand the range of	colors
     represented by small texels, to select a small ``window'' from a texture
     image with	larger dynamic range, to provide simple	lighting for volume
     rendering,	to implement a restricted kind of color-index texture, or to
     linearize the results of color-space conversions performed	by
     multidimensional texturing.

     When GL_COLOR_TABLE_SGI 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_SGI is enabled. These
     modified colors are then sent to the color	matrix operation. Finally, if
     GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI is enabled, the colors resulting
     from the color matrix operation are mapped	by the post color matrix color
     lookup table before being used by the histogram operation.

NOTES
     If	target is set to GL_TEXTURE_COLOR_TABLE_SGI, GL_COLOR_TABLE_SGI,
     GL_POST_CONVOLUTION_COLOR_TABLE_SGI or
     GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI then width must be a power of	two or
     a GL_INVALID_VALUE	error is generated.  All machines support table	widths
     up	to and including 256; some machines also support larger	tables.

     If	target is set to GL_TEXTURE_COLOR_TABLE_SGI and	the
     SGI_texture_color_table extension is not supported	then an
     GL_INVALID_ENUM error is generated.

     If	target is set to GL_COLOR_TABLE_SGI,
     GL_POST_CONVOLUTION_COLOR_TABLE_SGI, or
     GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI and the SGI_color_table extension is
     not supported then	an GL_INVALID_ENUM error is generated.






									Page 4






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



     If	type is	set to GL_UNSIGNED_BYTE_3_3_2_EXT,
     GL_UNSIGNED_SHORT_4_4_4_4_EXT, GL_UNSIGNED_SHORT_5_5_5_1_EXT,
     GL_UNSIGNED_INT_8_8_8_8_EXT, or GL_UNSIGNED_INT_10_10_10_2_EXT and	the
     EXT_packed_pixels extension is not	supported then a GL_INVALID_ENUM error
     is	generated.

     See glIntro for more information on using extensions.

ERRORS
     GL_INVALID_ENUM is	generated if target is not one of the allowable
     values.

     GL_INVALID_ENUM is	generated if internalformat is not one of the
     allowable values.

     GL_INVALID_VALUE is generated if width is less than zero.

     GL_INVALID_ENUM is	generated if format is not one of the allowable
     values.

     GL_INVALID_ENUM is	generated if type is not one of	the allowable values.

     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
     GL_PROXY_*	target.

     GL_INVALID_OPERATION is generated if glColorTableSGI is executed between
     the execution of glBegin and the corresponding execution of glEnd.

ASSOCIATED GETS
     glGetColorTableParameterSGI


MACHINE	DEPENDENCIES
     On	RealityEngine, RealityEngine2, and VTX systems,	SGI_color_table	is
     supported with these restrictions:

	  1.  Only the texture color table is supported.  The target color
	      table must be GL_TEXTURE_COLOR_TABLE_SGI or
	      GL_PROXY_TEXTURE_COLOR_TABLE_SGI.

	  2. The maximum image width is	256 pixels.

	  3. Only image	types GL_UNSIGNED_BYTE and GL_UNSIGNED_SHORT are
	     supported.

	  4. The GL_UNPACK_SWAP_BYTES pixel storage mode is not	supported.
	     Calling glColorTableSGI when GL_UNPACK_SWAP_BYTES is GL_TRUE
	     results in	a GL_INVALID_OPERATION error.






									Page 5






glColorTableSGI(3G)	       OpenGL Reference		   glColorTableSGI(3G)



	  5. The packed	pixel types GL_UNSIGNED_BYTE_3_3_2_EXT,
	     GL_UNSIGNED_SHORT_4_4_4_4_EXT, GL_UNSIGNED_SHORT_5_5_5_1_EXT,
	     GL_UNSIGNED_INT_8_8_8_8_EXT, and GL_UNSIGNED_INT_10_10_10_2_EXT
	     are not supported.

     InfiniteReality systems will generate incorrect results if	table values
     are greater than 1.0 after	the scale and bias have	been applied.  This
     will be fixed in a	future release.

     The SGI_texture_color_table extension is supported	on RealityEngine,
     RealityEngine2, and VTX systems and on InfiniteReality systems.

     The SGI_texture_color_table extension is supported	on High	Impact and
     Maximum Impact.  However, certain combinations of texture internal	format
     and texture color table internal format do	not work:
		  TEXTURE		  and	   TCT
       GL_LUMINANCE or GL_LUMINANCE_ALPHA	  GL_RGB
       all formats				  GL_RGBA
       all formats				  GL_INTENSITY

     On	High Impact and	Maximum	Impact systems,	the texture color table	will
     give incorrect results if GL_FOG_FUNC_SGIS	is enabled.


SEE ALSO
     glColorTableParameterSGI.





























									Page 6