glTexImage3DEXT: Specify a three-dimensional texture image.
C Specification |
Parameters |
Description |
Notes |
Errors |
Associated Gets |
See Also
void glTexImage3DEXT(
GLenum target,
GLint level,
GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
GLint border,
GLenum format,
GLenum type,
const GLvoid *pixels)
- target
- Specifies the target texture. Must be GL_TEXTURE_3D_EXT
or GL_PROXY_TEXTURE_3D_EXT.
- level
- Specifies the level-of-detail number. Level 0 is the base image level.
Level n is the nth mipmap reduction image.
- Specifies the number of color components in the texture. Must be 1, 2, 3,
or 4, or one of the following symbolic constants:
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_R3_G3_B2, GL_RGB,
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, or
GL_RGBA16. Additionally, if the
extension GL_EXT_shadow is supported, may be one of the
symbolic constants GL_DEPTH_COMPONENT,
GL_DEPTH_COMPONENT16_EXT,
GL_DEPTH_COMPONENT24_EXT, or
GL_DEPTH_COMPONENT32_EXT.
- width
- Specifies the width of the texture image. Must be
2n + 2border for some integer n.
- height
- Specifies the height of the texture image. Must be
2m + 2 border for some integer m.
- depth
- Specifies the depth of the texture image. Must be
2l + 2border for some integer l.
- 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.
If the extension GL_EXT_shadow is
supported, the symbolic value GL_DEPTH_COMPONENT is also
accepted.
- 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.
Texturing maps a portion of a specified texture image onto each graphical
primitive for which texturing is enabled. Three-dimensional texturing is
enabled and disabled using glEnable and glDisable with argument
GL_TEXTURE_3D_EXT.
Texture images are defined with glTexImage3DEXT. The arguments
describe the parameters of the texture image, such as height, width, depth,
width of the border, level-of-detail number (see glTexParameter), and the internal
resolution and format used to store the image. The last three arguments
describe the way the image is represented in memory, and they are identical to
the pixel formats used for glDrawPixels.
If target is GL_PROXY_TEXTURE_3D_EXT no data is read from
pixels, but all of the texture image state is recalculated, checked for
consistency, and checked against the implementation's capabilities. If the
implementation cannot handle a texture of the requested texture size, it will
set all of the texture image state to 0 (GL_TEXTURE_WIDTH,
GL_TEXTURE_HEIGHT, GL_TEXTURE_BORDER,
GL_TEXTURE_COMPONENTS), but no error will be generated.
If target is GL_TEXTURE_3D_EXT, 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 elements.
The first element corresponds to the lower-left-rear corner of the texture
volume. Subsequent elements progress left-to-right through the remaining
texels in the lowest-rear row of the texture volume, then in successively
higher rows of the rear 2D slice of the texture volume, then in successively
closer 2D slices of the texture volume. The final element corresponds to the
upper-right-front corner of the texture volume.
Each element of pixels is converted to an RGBA element according to
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.
- 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.
- 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.
- 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.
- 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 (see glPixelTransfer).
- GL_RGBA, GL_ABGR_EXT
- Each element contains all four components; for GL_RGBA,
the red component is first, followed by green, then blue, and then alpha;
for GL_ABGR_EXT the order is alpha, blue, green, and then
red.
- 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.
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.
Please refer to the glDrawPixels
reference page for a description of the acceptable values for the type
parameter.
An application may desire that the texture be stored at a certain resolution,
or that it be stored in a certain format. This resolution and format can be
requested by internalformat, but the implementation may not
support that resolution (the formats of GL_LUMINANCE,
GL_LUMINANCE_ALPHA, GL_RGB, and
GL_RGBA must be supported). When a resolution and storage
format is specified, the implementation will update the texture state to
provide the best match to the requested resolution. The
GL_PROXY_TEXTURE_3D_EXT target can be used to try a
resolution and format. The implementation will compute its best match for
the requested storage resolution and format; this state can then be queried
using glGetTexLevelParameter.
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.
Texturing has no effect in color index mode.
The texture image can be represented by the same data formats and types as
the pixels in a glDrawPixels command, except that formats
GL_STENCIL_INDEX and GL_DEPTH_COMPONENT
cannot be used, and type GL_BITMAP cannot be used. glPixelStore and glPixelTransfer modes affect texture
images in exactly the way they affect glDrawPixels.
A texture image with zero height, width, or depth indicates the null texture.
If the null texture is specified for level-of-detail 0, it is as if texturing
were disabled.
glTexImage3DEXT is part of the
EXT_texture3d extension.
- GL_INVALID_ENUM is generated when target
is not an accepted value.
- GL_INVALID_ENUM is generated when format
is not an accepted value.
- GL_INVALID_ENUM is generated when type is
not an accepted value.
- GL_INVALID_VALUE is generated if level is
less than zero or greater than log2max, where max
is the returned value of GL_MAX_3D_TEXTURE_SIZE_EXT.
- GL_INVALID_VALUE is generated if
internalformat is not an accepted value.
- GL_INVALID_VALUE is generated if width,
height, or depth is less than zero or
greater than GL_MAX_3D_TEXTURE_SIZE_EXT, when
width, height, or depth
cannot be represented as 2k + 2border for some
integer k,
- GL_INVALID_VALUE is generated if border is not 0 or 1.
- GL_INVALID_OPERATION is generated if
glTexImage3DEXT is executed between the execution of glBegin and the corresponding execution
of glEnd.
- GL_TEXTURE_TOO_LARGE_EXT is generated if the
implementation cannot accomodate a texture of the size requested.
glGetTexImage
glIsEnabled with argument
GL_TEXTURE_3D_EXT
glDrawPixels,
glFog,
glPixelStore,
glPixelTransfer,
glTexEnv,
glTexGen,
glTexImage1D,
glTexImage2D,
glTexParameter.