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。当使用
OES_texture_float
扩展时
gl.FLOAT
当使用
OES_texture_half_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
- 以下对象之一可以用作纹理的像素源
-
Uint8Array
(如果type
为gl.UNSIGNED_BYTE
,则必须使用此对象) Uint16Array
(如果type
为gl.UNSIGNED_SHORT_5_6_5
、gl.UNSIGNED_SHORT_4_4_4_4
、gl.UNSIGNED_SHORT_5_5_5_1
或ext.HALF_FLOAT_OES
,则必须使用此对象)
,Float32Array
(如果type
为gl.FLOAT
,则必须使用此对象)ImageData
,HTMLImageElement
,HTMLCanvasElement
,HTMLVideoElement
.
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 规范
另请参阅
启用 JavaScript 以查看数据。
WebGLRenderingContext.createTexture()
WebGLRenderingContext.bindTexture()
WebGLRenderingContext.texImage2D()
WebGLRenderingContext.compressedTexImage2D()
WebGLRenderingContext.copyTexImage2D()
OES_texture_float
OES_texture_half_float
EXT_sRGB
WebGLRenderingContext.getTexParameter()