此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
WebGL2RenderingContext.texImage3D()
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2021年9月.
* Some parts of this feature may have varying levels of support.
WebGL API 的 **WebGLRenderingContext.texImage3D()**方法指定一个 3d(three-dimensional)纹理贴图。
语法
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: 一个 3D 贴图gl.TEXTURE_2D_ARRAY: 一个 2D 数组贴图
level-
GLint指定细节等级。level0 是基础图片等级,n 是第 n 个 mipmap 纹理衰减等级。(译者注:原文中衰减应该指像素,并且注意,webgl 的 Mipmapping 技术要求顶层图像的行和列的维数均为 2 的幂) internalformat-
GLint指定贴图的颜色组成,可能值为:gl.ALPHA: 忽略红色,绿色,蓝色分量值只读取 alpha 信息。gl.RGB: 忽略 alpha 信息,读取红绿蓝分量gl.RGBA: 从颜色缓冲(colorBuffer)读取红色,绿色,蓝色和 alpha 分量gl.LUMINANCE:每个颜色组件都是亮度组件,alpha 值为 1.0.gl.LUMINANCE_ALPHA:每个组件都是亮度/alpha 组件(component).gl.R8gl.R16Fgl.R32Fgl.R8UIgl.RG8gl.RG16Fgl.RG32Fgl.RGUIgl.RGB8gl.SRGB8gl.RGB565gl.R11F_G11F_B10Fgl.RGB9_E5gl.RGB16Fgl.RGB32Fgl.RGB8UIgl.RGBA8gl.SRGB_APLHA8gl.RGB5_A1gl.RGBA4444gl.RGBA16Fgl.RGBA32Fgl.RGBA8UI
width-
GLsizei指定纹理的宽度 height-
GLsizei指定纹理的高度 depth-
GLsizei指定纹理的深度信息 border-
GLint指定边框宽度,必须为 0 formattype-
A
GLenum指定纹素的数据类型,可能值:gl.UNSIGNED_BYTE: 每个gl.RGBA对应 8 个字节gl.UNSIGNED_SHORT_5_6_5: 红色占五个字节,绿色占六个字节,蓝色占五个字节gl.UNSIGNED_SHORT_4_4_4_4: 红色占四个字节,绿色占 四 个字节,蓝色占 四 个字节gl.UNSIGNED_SHORT_5_5_5_1:红色占五个字节,绿色占五个字节,蓝色占五个字节,alpha 占一个字节gl.BYTE(这些属性的信息原文中均未提到,但是在 webgl1 中出现过,可以适当参考 webgl1 文献)gl.UNSIGNED_SHORTgl.SHORTgl.UNSIGNED_INTgl.INTgl.HALF_FLOATgl.FLOATgl.UNSIGNED_INT_2_10_10_10_REVgl.UNSIGNED_INT_10F_11F_11F_REVgl.UNSIGNED_INT_5_9_9_9_REVgl.UNSIGNED_INT_24_8gl.FLOAT_32_UNSIGNED_INT_24_8_REV(pixels must benull)
source-
其中一个对象可以用作纹理对象的源:
- offset
-
一个针对于
WebGLBuffer所储存数据的GLintptr字节的偏移量。用来重新加载已经用WebGLBuffer绑定到PIXEL_UNPACK_BUFFER的WebGLTexture。
返回值
没有
例子
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
规范
| Specification |
|---|
| WebGL 2.0 Specification> # 3.7.6> |
浏览器兼容性
Loading...