In OpenGL, 3D textures have much in common with 2D and 1D textures. Texture parameters and texture environment calls are the same, using the GL_ TEXTURE_3D_EXT (GL_ TEXTURE_3D in OpenGL 1.2) target in place of GL_ TEXTURE_2D or GL_ TEXTURE_1D.
Internal and external formats and types are the same, although a particular OpenGL implementation may limit the availability of 3D texture formats.
3D textures need to be accessed with ,
, and
texture
coordinates instead of just
and
. The additional texture
coordinate complexity, combined with the common uses for 3D textures, means
texture coordinate generation is used more commonly for 3D textures than for
2D and 1D.
3D texture maps take up a large amount of texture memory, and are expensive to change dynamically. This can affect multipass algorithms that require multiple passes with different textures.
The texture matrix operates on 3D texture coordinates in the same way that it does for 2D and 1D textures. A 3D texture volume can be translated, rotated, scaled, or have other transforms applied to it. Applying a transformation to the texture matrix is a convenient and high performance way to manipulate a 3D texture when it is too expensive to alter the texel values directly.