WebGL2RenderingContext: texStorage2D() 方法

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

注意:此功能在 Web Workers 中可用。

WebGL2RenderingContext 对象的 texStorage2D() 方法,是 WebGL API 的一部分,用于指定二维纹理存储的所有层级。

语法

js
texStorage2D(target, levels, internalformat, width, height)

参数

目标

一个 GLenum,指定活动纹理的绑定点(目标)。可能的值有:

  • gl.TEXTURE_2D:一个二维纹理。
  • gl.TEXTURE_CUBE_MAP:立方体贴图纹理。
levels

一个 GLint,指定纹理层级的数量。

internalformat

一个 GLenum,指定纹理存储格式。可能的值

  • gl.R8
  • gl.R8_SNORM
  • gl.R16F
  • gl.R32F
  • gl.R8UI
  • gl.R8I
  • gl.R16UI
  • gl.R16I
  • gl.R32UI
  • gl.R32I
  • gl.RG8
  • gl.RG8_SNORM
  • gl.RG16F
  • gl.RG32F
  • gl.RG8UI
  • gl.RG8I
  • gl.RG16UI
  • gl.RG16I
  • gl.RG32UI
  • gl.RG32I
  • gl.RGB8
  • gl.SRGB8
  • gl.RGB565
  • gl.RGB8_SNORM
  • gl.R11F_G11F_B10F
  • gl.RGB9_E5
  • gl.RGB16F
  • gl.RGB32F
  • gl.RGB8UI
  • gl.RGB8I
  • gl.RGB16UI
  • gl.RGB16I
  • gl.RGB32UI
  • gl.RGB32I
  • gl.RGBA8
  • gl.SRGB8_ALPHA8
  • gl.RGBA8_SNORM
  • gl.RGB5_A1
  • gl.RGBA4
  • gl.RGB10_A2
  • gl.RGBA16F
  • gl.RGBA32F
  • gl.RGBA8UI
  • gl.RGBA8I
  • gl.RGB10_A2UI
  • gl.RGBA16UI
  • gl.RGBA16I
  • gl.RGBA32UI
  • gl.RGBA32I
  • gl.DEPTH_COMPONENT16
  • gl.DEPTH_COMPONENT24
  • gl.DEPTH_COMPONENT32F
  • gl.DEPTH24_STENCIL8
  • gl.DEPTH32F_STENCIL8

与 OpenGL 3.0 不同,WebGL 2不支持以下 ETC2 和 EAC 压缩纹理格式(请参阅 WebGL 2 规范的 第 5.37 节)。您可能可以通过 WEBGL_compressed_texture_etc 扩展来启用它们。

  • gl.COMPRESSED_R11_EAC
  • gl.COMPRESSED_SIGNED_R11_EAC
  • gl.COMPRESSED_RG11_EAC
  • gl.COMPRESSED_SIGNED_RG11_EAC
  • gl.COMPRESSED_RGB8_ETC2
  • gl.COMPRESSED_SRGB8_ETC2
  • gl.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • gl.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • gl.COMPRESSED_RGBA8_ETC2_EAC
  • gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC

有关这些格式的描述,请参阅 WebGLRenderingContext.texImage2D()。由于 texStorage2D 实际上不指定缓冲区源,因此 formattype 参数无关紧要,可以被认为是对应于 internalformat 的任何有效值。

width

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

height

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

返回值

无(undefined)。

示例

js
gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8, 256, 256);

规范

规范
WebGL 2.0 规范
# 3.7.6

浏览器兼容性

另见