files/en-us/web/api/webgl2renderingcontext/teximage3d/index.md
{{APIRef("WebGL")}}{{AvailableInWorkers}}
The texImage3D() method of the {{domxref("WebGL2RenderingContext")}} interface of the WebGL API specifies a three-dimensional texture image.
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData, srcOffset)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, source)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, offset)
target
gl.TEXTURE_3D: A three-dimensional texture.gl.TEXTURE_2D_ARRAY: A two-dimensional array texture.level
internalformat
width
height
depth
TEXTURE_2D_ARRAY.border
format
type
: A {{domxref("WebGL_API/Types", "GLenum")}} specifying the size of each integer element in the raw texel data.
The internalformat, format, and type values must be compatible with each other. For all valid combinations, see {{domxref("WebGLRenderingContext.texImage2D()")}}.
The texture source can be provided in one of three ways: from an {{jsxref("ArrayBuffer")}} (possibly shared) using srcData and srcOffset; from a DOM pixel source; or from gl.PIXEL_UNPACK_BUFFER using offset.
srcData
type parameter; see {{domxref("WebGLRenderingContext.texImage2D()")}}. When type is FLOAT_32_UNSIGNED_INT_24_8_REV, srcData must be null.srcOffset {{optional_inline}}
srcData to start reading from. Defaults to 0.source
offset
gl.PIXEL_UNPACK_BUFFER.None ({{jsxref("undefined")}}).
gl.texImage3D(
gl.TEXTURE_3D,
0, // level
gl.RGBA, // internalFormat
1, // width
1, // height
1, // depth
0, // border
gl.RGBA, // format
gl.UNSIGNED_BYTE, // type
new Uint8Array([0xff, 0x00, 0x00, 0x00]),
); // data
{{Specifications}}
{{Compat}}