WEBGL_compressed_texture_s3tc 扩展

WEBGL_compressed_texture_s3tc 扩展是 WebGL API 的一部分,它公开了四种 S3TC 压缩纹理格式.

压缩纹理减少了在 GPU 上存储纹理所需的内存量,从而允许使用更高分辨率的纹理或更多相同分辨率的纹理。

WebGL 扩展可使用 WebGLRenderingContext.getExtension() 方法获得。有关更多信息,另请参阅 使用扩展,该信息位于 WebGL 教程 中。

注意:此扩展对 WebGL1WebGL2 上下文均可用。

常量

压缩纹理格式由四个常量公开,可用于两个函数:compressedTexImage2D()compressedTexSubImage2D().

ext.COMPRESSED_RGB_S3TC_DXT1_EXT

以 RGB 图像格式压缩的 DXT1 图像。

ext.COMPRESSED_RGBA_S3TC_DXT1_EXT

以 RGB 图像格式压缩的 DXT1 图像,带有简单的开/关 alpha 值。

ext.COMPRESSED_RGBA_S3TC_DXT3_EXT

以 RGBA 图像格式压缩的 DXT3 图像。与 32 位 RGBA 纹理相比,它提供了 4:1 的压缩率。

ext.COMPRESSED_RGBA_S3TC_DXT5_EXT

以 RGBA 图像格式压缩的 DXT5 图像。它也提供了 4:1 的压缩率,但在 alpha 压缩方式上与 DXT3 压缩不同。

示例

js
const ext =
  gl.getExtension("WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");

const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);

gl.compressedTexImage2D(
  gl.TEXTURE_2D,
  0,
  ext.COMPRESSED_RGBA_S3TC_DXT5_EXT,
  512,
  512,
  0,
  textureData,
);

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);

规范

规范
WebGL WEBGL_compressed_texture_s3tc Khronos 批准扩展规范

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅