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.