WebGLRenderingContext:texSubImage2D() 方法

基线 广泛可用

此功能已得到良好建立,并在许多设备和浏览器版本上都能正常运行。它自 2015 年 7 月.

报告反馈

语法

WebGLRenderingContext.texSubImage2D()WebGL API 中的一种方法,用于指定当前纹理的子矩形。
// WebGL1
texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) // pixels is a TypedArray or a DataView
texSubImage2D(target, level, xoffset, yoffset, format, type, pixels)

// WebGL2
texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, offset)
texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, source)
texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels, srcOffset)

js

参数

target

  • 一个 GLenum,指定活动纹理的绑定点(目标)。可能的取值
  • gl.TEXTURE_2D:二维纹理。
  • gl.TEXTURE_CUBE_MAP_POSITIVE_X:立方体贴图纹理的正 X 面。
  • gl.TEXTURE_CUBE_MAP_NEGATIVE_X:立方体贴图纹理的负 X 面。
  • gl.TEXTURE_CUBE_MAP_POSITIVE_Y:立方体贴图纹理的正 Y 面。
  • gl.TEXTURE_CUBE_MAP_NEGATIVE_Y:立方体贴图纹理的负 Y 面。
  • gl.TEXTURE_CUBE_MAP_POSITIVE_Z:立方体贴图纹理的正 Z 面。
gl.TEXTURE_CUBE_MAP_NEGATIVE_Z:立方体贴图纹理的负 Z 面。

level

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

xoffset

一个 GLint,指定纹理数组中宽度为 width、高度为 height 的矩形子区域的左下角纹素 x 坐标。

yoffset

一个 GLint,指定纹理数组中宽度为 width、高度为 height 的矩形子区域的左下角纹素 y 坐标。

width

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

height

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

format

  • 一个 GLenum,指定纹素数据的格式。可能的取值
  • gl.ALPHA:丢弃红色、绿色和蓝色分量,读取 alpha 分量。
  • gl.RGB:丢弃 alpha 分量,读取红色、绿色和蓝色分量。
  • gl.RGBA:从颜色缓冲区读取红色、绿色、蓝色和 alpha 分量。
  • gl.LUMINANCE:每个颜色分量都是一个亮度分量,alpha 为 1.0。

gl.LUMINANCE_ALPHA:每个分量都是亮度/alpha 分量。

  • 当使用 EXT_sRGB 扩展时
  • ext.SRGB_EXT

ext.SRGB_ALPHA_EXT

  • 当使用 WebGL 2 上下文 时,还可以使用以下取值
  • gl.RED
  • gl.RG
  • gl.RED_INTEGER
  • gl.RG_INTEGER
  • gl.RGB_INTEGER
gl.RGBA_INTEGER

type

  • 一个 GLenum,指定纹素数据的类型。可能的取值
  • gl.UNSIGNED_BYTE:每个通道 8 位,用于 gl.RGBA
  • 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.FLOAT

ext.SRGB_ALPHA_EXT

  • gl.HALF_FLOAT_OES
  • gl.BYTE
  • gl.UNSIGNED_SHORT
  • gl.SHORT
  • gl.UNSIGNED_INT
  • gl.INT
  • 当使用 OES_texture_float 扩展时
  • gl.HALF_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

ImageBitmap

offset

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

返回值

示例

WebGLRenderingContext.texSubImage2D()WebGL API 中的一种方法,用于指定当前纹理的子矩形。
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, image);

规范

无 (undefined).
规范
# WebGL 规范
TEXSUBIMAGE2D
# 3.7.6

浏览器兼容性

WebGL 2.0 规范

另请参阅