WebGL2RenderingContext:texImage3D() 方法

Baseline 广泛可用 *

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

* 此特性的某些部分可能存在不同级别的支持。

注意:此功能在 Web Workers 中可用。

WebGL2RenderingContext 接口的 texImage3D() 方法,属于 WebGL API,用于指定一个三维纹理图像。

语法

js
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)

参数

目标

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

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

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

internalformat

一个 GLenum,指定纹理加载后应如何存储。

width

一个 GLsizei,指定纹理的宽度(以 texel 为单位)。

height

一个 GLsizei,指定纹理的高度(以 texel 为单位)。

depth

一个 GLsizei,指定纹理的深度/TEXTURE_2D_ARRAY 中纹理的数量。

border

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

格式(format)

一个 GLenum,指定原始纹素数据中每个整数元素应如何解释为颜色分量。

type

一个 GLenum,指定原始纹素数据中每个整数元素的大小。

internalformatformattype 值必须相互兼容。所有有效组合请参见 WebGLRenderingContext.texImage2D()

纹理源可以通过以下三种方式之一提供:使用 srcDatasrcOffsetArrayBuffer(可能已共享)提供;从 DOM 像素 source 提供;或者使用 offsetgl.PIXEL_UNPACK_BUFFER 提供。

srcData

一个 TypedArrayDataView,包含压缩后的纹理数据。其类型必须与 type 参数匹配;请参见 WebGLRenderingContext.texImage2D()。当 typeFLOAT_32_UNSIGNED_INT_24_8_REV 时,srcData 必须是 null

srcOffset 可选

一个指定从 `srcData` 开始读取的索引的整数。默认为 `0`。

source

从 DOM 像素源读取,它可以是以下之一:

offset

一个 GLintptr,指定绑定到 `gl.PIXEL_UNPACK_BUFFER` 的缓冲区中的起始地址。

返回值

无(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

浏览器兼容性

另见