WebGL2RenderingContext: compressedTexSubImage3D() 方法

Baseline 已广泛支持

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

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

compressedTexSubImage3D()WebGL APIWebGL2RenderingContext 接口的一个方法,用于为压缩格式的纹理图像指定一个三维子矩形。

压缩图像格式仅通过一些 WebGL 扩展 提供。

语法

js
compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, offset)

compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, srcData)
compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, srcData, srcOffset)
compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, srcData, srcOffset, srcLengthOverride)

参数

目标

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

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

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

xoffset

一个 GLint,指定压缩纹理图像内的 x 偏移量。

yoffset

一个 GLint,指定压缩纹理图像内的 y 偏移量。

zoffset

一个 GLint,指定压缩纹理图像内的 z 偏移量。

width

一个 GLsizei,指定纹理单元(texels)中压缩纹理的宽度。

height

一个 GLsizei,指定纹理单元(texels)中压缩纹理的高度。

depth

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

格式(format)

一个 GLenum,指定压缩图像格式。可能值的列表,请参阅 WebGLRenderingContext.compressedTexImage2D()

纹理源可以通过两种方式提供:使用 srcDatasrcOffsetsrcLengthOverrideArrayBuffer(可能共享)提供;或者,在 WebGL 2 中,从 gl.PIXEL_UNPACK_BUFFER 使用 imageSizeoffset 提供。

srcData

一个包含压缩纹理数据的 TypedArrayDataView

srcOffset 可选

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

srcLengthOverride 可选

一个整数,指定 srcData 中要读取的元素数量。默认为 srcData.length - srcOffset

imageSize

一个 GLsizei,指定图像数据的大小(以字节为单位)。

offset

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

返回值

无(undefined)。

示例

js
gl.compressedTexSubImage3D(
  gl.TEXTURE_3D,
  0,
  0,
  0,
  512,
  512,
  512,
  gl.COMPRESSED_R11_EAC,
  textureData,
);

规范

规范
WebGL 2.0 规范
# 3.7.6

浏览器兼容性

另见