glTexImage2D
NAME
glTexImage2D -- specify a two-dimensional texture image
C SPECIFICATION
void glTexImage2D(GLenum target,
GLint level,
GLint components,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid *pixels)
PARAMETERS
- target
-
Specifies the target texture. Must be GL_TEXTURE_2D.
- level
-
Specifies the level-of-detail number. Level 0 is the base image
level. Level n is the nth mipmap reduction image.
- components
-
Specifies the number of color components in the texture. Must be
1, 2, 3, or 4.
- width
-
Specifies the width of the texture image. Must be
2^n + 2 * (border) for some integer n.
- height
-
Specifies the height of the texture image. Must be
2^m + 2 * (border) for some integer m.
- border
-
Specifies the width of the border. Must be either 0 or 1.
- format
-
Specifies the format of the pixel data. The following symbolic
values are accepted: GL_COLOR_INDEX, GL_RED,
GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB,
GL_RGBA, GL_LUMINANCE, and GL_LUMINANCE_ALPHA.
- type
-
Specifies the data type of the pixel data. The following symbolic
values are accepted: GL_UNSIGNED_BYTE, GL_BYTE,
GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT,
GL_UNSIGNED_INT, GL_INT, and GL_FLOAT.
- pixels
-
Specifies a pointer to the image data in memory.
DESCRIPTION
Texturing maps a portion of a specified texture image onto each
graphical primitive for which texturing is enabled. Two-dimensional
texturing is enabled and disabled using
glEnable and
glDisable
with argument GL_TEXTURE_2D.
Texture images are defined with glTexImage2D. The arguments describe
the parameters of the texture image, such as height, width, width of the
border, level-of-detail number (see
glTexParameter),
and number of color componenents provided. The last three arguments
describe the way the image is represented in memory, and they are identical
to the pixel formats used for
glDrawPixels.
Data is read from pixels as a sequence of signed or unsigned bytes,
shorts, or longs, or single-precision floating-point values, depending on
type. These values are grouped into sets of one, two, three, or four
values, depending on format, to form an element. If type is
GL_BITMAP, the data is considered as a string of unsigned bytes
(and format must be GL_COLOR_INDEX). Each data byte is
treated as eight 1-bit elements, with bit ordering determined by
GL_UNPACK_LSB_FIRST (see
glPixelStore).
format determines the composition of each element in pixels and
selects the target frame buffer. It can assume one of nine symbolic values:
- GL_COLOR_INDEX
-
Each element is a single value, a color index. It is converted
to fixed point (with an unspecified number of zero bits to the
right of the binary point), shifted left or right depending on
the value and sign of GL_INDEX_SHIFT, and added to
GL_INDEX_OFFSET (see
glPixelTransfer).
The resulting index is converted to a set of color components
using the GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G,
GL_PIXEL_MAP_I_TO_B, and GL_PIXEL_MAP_I_TO_A
tables, and clamped to the range [0, 1].
- GL_RED
-
Each element is a single red component. It is converted to
floating point and assembled into an RGBA element by attaching
0.0 for green and blue, and 1.0 for alpha. Each component is
then multiplied by the signed scale factor GL_c_SCALE, added
to the signed bias GL_c_BIAS, and clamped to the range
[0, 1] (see
glPixelTransfer).
- GL_GREEN
-
Each element is a single green component. It is converted to
floating point and assembled into an RGBA element by attaching
0.0 for red and blue, and 1.0 for alpha. Each component is
then multiplied by the signed scale factor GL_c_SCALE, added
to the signed bias GL_c_BIAS, and clamped to the range
[0, 1] (see
glPixelTransfer).
- GL_BLUE
-
Each element is a single blue component. It is converted to
floating point and assembled into an RGBA element by attaching
0.0 for red and green, and 1.0 for alpha. Each component is
then multiplied by the signed scale factor GL_c_SCALE, added
to the signed bias GL_c_BIAS, and clamped to the range
[0, 1] (see
glPixelTransfer).
- GL_ALPHA
-
Each element is a single alpha component. It is converted to
floating point and assembled into an RGBA element by attaching
0.0 for red, green and blue. Each component is
then multiplied by the signed scale factor GL_c_SCALE, added
to the signed bias GL_c_BIAS, and clamped to the range
[0, 1] (see
glPixelTransfer).
- GL_RGB
-
Each element is an RGB triple. It is converted to floating point
and assembled into an RGBA element by attaching 1.0 for alpha.
Each component is then multiplied by the signed scale factor
GL_c_SCALE, added to the signed bias GL_c_BIAS, and
clamped to the range [0, 1] (see
glPixelTransfer).
- GL_RGBA,
-
Each element contains all four components. Each component is
multiplied by the signed scale factor GL_c_SCALE, added to the
signed bias GL_c_BIAS, and clamped to the range [0, 1] (see
glPixelTransfer).
- GL_LUMINANCE
-
Each element is a single luminance value. It is converted to
floating point, then assembled into an RGBA element by replicating
the luminance value three times for red, green, and blue and
attaching 1.0 for alpha. Each component is then multiplied by the
signed scale factor GL_c_SCALE, added to the signed bias
GL_c_BIAS, and clamped to the range [0, 1] (see
glPixelTransfer).
- GL_LUMINANCE_ALPHA
-
Each element is a luminance/alpha pair. It is converted to
floating point, then assembled into an RGBA element by replicating
the luminance value three times for red, green, and blue. Each
component is then multiplied by the signed scale factor
GL_c_SCALE, added to the signed bias GL_c_BIAS, and
clamped to the range [0, 1] (see
glPixelTransfer).
Please refer to the
glDrawPixels
reference page for a description of the acceptable values for the type
parameter.
A texture image can have up to four components per texture element, depending
on components. A one-component texture image uses only the red component
of the RGBA color extracted from pixels. A two-component image uses
the R and A values. A three-component image uses the R, G, and B values. A
four-component image uses all of the RGBA components
NOTES
Texturing has no effect in color index mode.
The texture image can be represented by the same data formats as the
pixels in a
glDrawPixels
command, except that GL_STENCIL_INDEX and GL_DEPTH_COMPONENT
cannot be used.
glPixelStore and
glPixelTransfer
modes affect texture images in exactly the way they affect
glDrawPixels.
A texture image with zero height or width indicates the null texture. If the
null texture is specified for level-of-detail 0, it is as if texturing were
disabled.
ERRORS
GL_INVALID_ENUM is generated when target is not
GL_TEXTURE_2D.
GL_INVALID_ENUM is generated when format is not an accepted
format constant. Format constants other than GL_STENCIL_INDEX
and GL_DEPTH_COMPONENT are accepted.
GL_INVALID_ENUM is generated when type is not a type
constant.
GL_INVALID_ENUM is generated if type is GL_BITMAP and
format is not GL_COLOR_INDEX.
GL_INVALID_VALUE is generated if level is less than zero or
greater than ld(max) where max is the returned value of
GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE is generated if components is not 1, 2, 3,
or 4.
GL_INVALID_VALUE is generated if width or height is less
than zero or greater than 2 + GL_MAX_TEXTURE_SIZE, or if it cannot be represented
as 2^k + 2 * (border) for some integer value of k.
GL_INVALID_VALUE is generated if border is not 0 or 1.
GL_INVALID_OPERATION is generated if glTexImage2D is executed
between the execution of glBegin and
the corresponding execution of glEnd.
ASSOCIATED GETS
glGetTexImage
glIsEnabled with argument
GL_TEXTURE_2D
SEE ALSO
glDrawPixels,
glFog,
glPixelStore,
glPixelTransfer,
glTexEnv,
glTexGen,
glTexImage1D,
glTexParameter
back to the OpenGL index page
© 1995 Uwe Behrens. All rights reserved.