WebGL2RenderingContext.texImage3D()

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

WebGL APIWebGLRenderingContext.texImage3D()方法指定一个3d(three-dimensional)纹理贴图。

语法

void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, GLintptr offset); 

void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, HTMLCanvasElement source);
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, HTMLImageElement source); 
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, HTMLVideoElement source); 
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, ImageBitmap source); 
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, ImageData source); 
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, ArrayBufferView? srcData);
void gl.texImage3D(target, level, internalformat, width, height, depth, border, format, type, ArrayBufferView 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.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_APLHA8
  • gl.RGB5_A1
  • gl.RGBA4444
  • gl.RGBA16F
  • gl.RGBA32F
  • gl.RGBA8UI
width
 GLsizei指定纹理的宽度
height
GLsizei 指定纹理的高度
depth
GLsizei 指定纹理的深度信息
border
GLint指定边框宽度,必须为0
format
GLenum制定纹素的版本。正确的 内部格式 组合被列举在 这个列表
type
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_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 (pixels must be null)
source
其中一个对象可以用作纹理对象的源:
offset
一个针对于WebGLBuffer所储存数据的GLintptr字节的偏移量。用来重新加载已经用WebGLBuffer绑定到PIXEL_UNPACK_BUFFERWebGLTexture

返回值

没有

例子

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 ) 状态(Status) 意见(Comment)
WebGL 2.0
texImage3D
Editor's Draft Updated definition for WebGL.
OpenGL ES 3.0
glTexImage3D
Standard Man page of the (similar) OpenGL ES 3.0 API.

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
texImage3DChrome Full support 56Edge No support NoFirefox Full support 51IE No support NoOpera Full support 43Safari No support NoWebView Android Full support 58Chrome Android Full support 58Firefox Android Full support 51Opera Android Full support 43Safari iOS No support NoSamsung Internet Android Full support 7.0
SharedArrayBuffer as a parameterChrome Full support 60Edge No support NoFirefox ? IE No support NoOpera Full support 47Safari No support NoWebView Android Full support 60Chrome Android Full support 60Firefox Android ? Opera Android Full support 44Safari iOS No support NoSamsung Internet Android No support No

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown

另见