WebGL2RenderingContext: texImage3D() 方法
WebGLRenderingContext.texImage3D()
方法是 WebGL API 的一部分,用于指定三维纹理图像。
语法
js
texImage3D(target, level, internalformat, width, height, depth, border, format, type, offset)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, source)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData)
texImage3D(target, level, internalformat, width, height, depth, border, format, type, srcData, srcOffset)
参数
target
-
一个
GLenum
,指定活动纹理的绑定点(目标)。可能的值gl.TEXTURE_3D
:三维纹理。gl.TEXTURE_2D_ARRAY
:二维数组纹理。
level
-
一个
GLint
,指定细节级别。级别 0 是基础图像级别,级别 n 是第 n 个mipmap 缩减级别。 internalformat
-
一个
GLint
,指定纹理中的颜色分量。可能的值-
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.SRGB8_ALPHA8
gl.RGB5_A1
gl.RGBA4444
gl.RGBA16F
gl.RGBA32F
gl.RGBA8UI
-
width
-
一个
GLsizei
,指定纹理的宽度。 height
-
一个
GLsizei
,指定纹理的高度。 depth
-
一个
GLsizei
,指定纹理的深度。 border
-
一个
GLint
,指定边框的宽度。必须为 0。 format
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
)
source
-
以下对象之一可以用作纹理的像素源
srcData
-
一个
TypedArray
或DataView
对象。 offset
-
一个
GLintptr
,表示WebGLBuffer
数据存储中的字节偏移量。用于将数据从绑定到PIXEL_UNPACK_BUFFER
目标的WebGLBuffer
上传到当前绑定的WebGLTexture
。
返回值
无 (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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。