glpixeltexgen
- Man Page
glPixelTexGenSGIX(3G) OpenGL Reference glPixelTexGenSGIX(3G)
NAME
glPixelTexGenSGIX - control the generation of texture coordinates from
pixel groups
C SPECIFICATION
void glPixelTexGenSGIX( GLenum mode )
PARAMETERS
mode Specifies a mode of generating texture coordinates from pixel
groups, and corresponds to the number of components in the pixel
group. Must be one of the following: GL_NONE, GL_RGBA, GL_RGB,
GL_LUMINANCE_ALPHA, GL_LUMINANCE.
GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX,
GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX,
GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX, or GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX.
The default value is GL_NONE.
DESCRIPTION
glPixelTexGenSGIX affects the result of the glDrawPixels and glCopyPixels
commands. It allows the color components of pixel groups to be used as
texture coordinates, effectively converting a color image into a texture
coordinate image. Because texture mapping is essentially a
multidimensional table lookup, this conversion supports multidimensional
color lookups for images. Such multidimensional lookups can be used to
implement very accurate color space conversions.
If the parameter is GL_LUMINANCE, there must be a valid 1D texture
enabled, which can have any internal format. The external format of the
pixel group must be GL_LUMINANCE; the luminance component will be used to
generate an s texture coordinate.
If the parameter is GL_LUMINANCE_ALPHA, there must be a valid 2D texture
enabled, which can have any internal format. The external format of the
pixel group must be GL_LUMINANCE_ALPHA; the luminance and alpha
components will be used to generate s and t texture coordinates,
respectively.
If the parameter is GL_RGB, there must be a valid 3D texture enabled,
which can have any internal format. The external format of the pixel
group must be GL_RGB; the red, green, and blue components will be used to
generate s, t and r texture coordinates, respectively.
If the parameter is GL_RGBA, there must be a valid 4D texture enabled,
which can have any internal format. The external format of the pixel
group must be GL_RGBA; the red, green, blue, and alpha components will be
used to generate s, t, r, and q texture coordinates, respectively.
Page 1
glPixelTexGenSGIX(3G) OpenGL Reference glPixelTexGenSGIX(3G)
The texture components generated in this way are normalized to the range
[0..1] based on the external type of the pixel group.
The result of the texture-mapping operation is texture-blended onto a
fragment which has the attributes of the current raster position.
Therefore the desired texture environment mode must be set, based on the
internal format of the texture. For example, it is possible to have a
pixel group with the format GL_RGBA generate texture coordinates into a
4D texture; yet the internal format of the texture can be GL_LUMINANCE
which is undefined for GL_DECAL mode in the texture environment.
If the parameter is GL_NONE, pixel texture is disabled, the default.
A useful mode of pixel texture is to have a pixel group with the external
format GL_RGBA index into a 3D texture, and have the alpha component
combined with the texel output. In this case the internal format of the
texture must have alpha, and that alpha can be replaced by the "incoming"
alpha by calling glPixelTexGenSGIX with the parameter
GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX. Since the incoming pixel group has
four components, the texture must be a 4D texture; since the alpha is not
intended for lookup, the 4D texture can have a q size of one which is
essentially a 3D texture. The "alpha replace" mode can be turned off by
calling glPixelTexGenSGIX with the parameter
GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX, the default.
Currently Silicon Graphics machines that support glPixelTexGenSGIX in
hardware do not have quad-linear interpolation. So the fourth dimension
of interpolation, q, defaults to nearest-neighbor mode (the other
dimensions may still be linear, depending on the glTexParameter call).
In order to achieve a true quad-linearly interpolated result, a two-pass
operation is required, which uses the frame buffer blend for the last
interpolation. For this purpose special ceiling/floor functions for the q
dimension have been supplied, which can be referenced in the man pages
for glTexParameter. These are
GL_PIXEL_TEX_GEN_Q_CEILING_SGIX
GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX
GL_PIXEL_TEX_GEN_Q_ROUND_SGIX
On the second pass, use the "alpha replace" mode (described above) to
combine the incoming alpha with the output (as well as using it in the
fourth dimensional texture lookup). The original alpha, however, is not
usable as a fractional interpolation value until it gets left-shifted by
the number of bits corresponding to the logarithm (base 2) of the q size
of 4D texture. The alpha can be effectively left-shifted using the
texture color table. Since the table has limited precision, a mode is
supplied which will left-shift the alpha by 4 bits before combining it
with the output. To use it call glPixelTexGenSGIX with the parameter
GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX. The default, with no left shift, is
Page 2
glPixelTexGenSGIX(3G) OpenGL Reference glPixelTexGenSGIX(3G)
GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX (MS and LS refer to "most significant" and
"least significant"). This produces excellent results for 8 and 12 bit
components, for different texture q sizes.
ERRORS
GL_INVALID_ENUM is generated when mode is not an accepted defined value.
MACHINE DEPENDENCIES
glPixelTexGenSGIX is supported only on High Impact and Maximum Impact
systems; however, the 1D and 2D modes (GL_LUMINANCE and
GL_LUMINANCE_ALPHA) are not supported, however. Those who wish to emulate
these functions may define 3D textures with r size or t size of one, and
pad the incoming pixel groups with concocted blue or green values.
On High Impact and Maximum Impact systems, the effect of the current
raster position's color is not taken into account, as if the color is
white, with full alpha. This will be fixed in the next release.
On High Impact and Maximum Impact systems, glPixelTexGenSGIX for
glCopyPixels is not supported. This will be fixed in the next release.
SEE ALSO
glTexEnv, glTexImage1D, glTexImage2D, glTexImage3DEXT, glTexImage4DSGIS,
glTexParameter
Page 3