WebGL2RenderingContext: texImage3D() 方法

基线 广泛可用

此功能已完善,可在许多设备和浏览器版本中使用。它自以下时间起在浏览器中可用 2021 年 9 月.

WebGLRenderingContext.texImage3D() 方法是 WebGL API 的一部分,用于指定三维纹理图像。

语法

js
texImage3D(target, level, internalformat, width, height, depth, border, format, type, offset)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, source)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData, srcOffset)

参数

target

一个 GLenum,指定活动纹理的绑定点(目标)。可能的值

  • gl.TEXTURE_3D:三维纹理。
  • gl.TEXTURE_2D_ARRAY:二维数组纹理。
level

一个 GLint,指定细节级别。级别 0 是基础图像级别,级别 n 是第 n 个mipmap 缩减级别。

internalformat

一个 GLint,指定纹理中的颜色分量。可能的值

  • gl.ALPHA:丢弃红色、绿色和蓝色分量,并读取 alpha 分量。
  • gl.RGB:丢弃 alpha 分量,并读取红色、绿色和蓝色分量。
  • gl.RGBA:从颜色缓冲区读取红色、绿色、蓝色和 alpha 分量。
  • gl.LUMINANCE:每个颜色分量都是一个亮度分量,alpha 为 1.0。
  • gl.LUMINANCE_ALPHA:每个分量都是一个亮度/alpha 分量。
  • gl.R8
  • gl.R16F
  • gl.R32F
  • gl.R8UI
  • gl.RG8
  • gl.RG16F
  • gl.RG32F
  • gl.RGUI
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB565
  • gl.R11F_G11F_B10F
  • gl.RGB9_E5
  • gl.RGB16F
  • gl.RGB32F
  • gl.RGB8UI
  • gl.RGBA8
  • gl.SRGB8_ALPHA8
  • gl.RGB5_A1
  • gl.RGBA4444
  • gl.RGBA16F
  • gl.RGBA32F
  • gl.RGBA8UI
width

一个 GLsizei,指定纹理的宽度。

height

一个 GLsizei,指定纹理的高度。

depth

一个 GLsizei,指定纹理的深度。

border

一个 GLint,指定边框的宽度。必须为 0。

format

一个 GLenum,指定纹素数据的格式。与 internalformat 的正确组合列在 此表 中。

type

一个 GLenum,指定纹素数据的类型。可能的值

  • gl.UNSIGNED_BYTE:对于 gl.RGBA,每个通道 8 位。
  • gl.UNSIGNED_SHORT_5_6_5:5 位红色、6 位绿色、5 位蓝色。
  • gl.UNSIGNED_SHORT_4_4_4_4:4 位红色、4 位绿色、4 位蓝色、4 位 alpha。
  • gl.UNSIGNED_SHORT_5_5_5_1:5 位红色、5 位绿色、5 位蓝色、1 位 alpha。
  • gl.BYTE
  • gl.UNSIGNED_SHORT
  • gl.SHORT
  • gl.UNSIGNED_INT
  • gl.INT
  • gl.HALF_FLOAT
  • gl.FLOAT
  • gl.UNSIGNED_INT_2_10_10_10_REV
  • gl.UNSIGNED_INT_10F_11F_11F_REV
  • gl.UNSIGNED_INT_5_9_9_9_REV
  • gl.UNSIGNED_INT_24_8
  • gl.FLOAT_32_UNSIGNED_INT_24_8_REV(像素必须为 null
source

以下对象之一可以用作纹理的像素源

srcData

一个 TypedArrayDataView 对象。

offset

一个 GLintptr,表示 WebGLBuffer 数据存储中的字节偏移量。用于将数据从绑定到 PIXEL_UNPACK_BUFFER 目标的 WebGLBuffer 上传到当前绑定的 WebGLTexture

返回值

无 (undefined).

示例

js
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

规范

规范
WebGL 2.0 规范
# 3.7.6

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅