WebGL2RenderingContext: texSubImage3D() 方法

基线 广泛可用

此功能已经完善,并在许多设备和浏览器版本中有效。它已在浏览器中可用,自 2021 年 9 月.

WebGL2RenderingContext.texSubImage3D() 方法是 WebGL API 的一个方法,用于指定当前纹理的子矩形。

语法

js
texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset)
texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData)
texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, srcData, srcOffset)

参数

target

一个 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,指定纹理的宽度。

height

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

depth

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

format

一个 GLenum,指定纹理数据的格式。可能的值

  • 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.SRGB_ALPHA8
  • gl.RGB5_A1
  • gl.RGBA4444
  • gl.RGBA16F
  • gl.RGBA32F
  • gl.RGBA8UI
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)
pixels

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

srcData

一个 TypedArray 或一个 DataView 对象。

offset

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

返回值

无 (undefined).

示例

js
gl.texSubImage3D(
  gl.TEXTURE_3D,
  0,
  0,
  0,
  0,
  image.width,
  image.height,
  1,
  gl.RGBA,
  gl.UNSIGNED_BYTE,
  image,
);

规范

规范
WebGL 2.0 规范
# 3.7.6

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅