WEBGL_compressed_texture_s3tc 擴充套件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

WEBGL_compressed_texture_s3tc 擴充套件是 WebGL API 的一部分,並公開四種 S3TC 壓縮紋理格式

壓縮紋理可減少 GPU 儲存紋理所需的記憶體量,從而允許使用更高解析度的紋理或更多相同解析度的紋理。

可以使用 WebGLRenderingContext.getExtension() 方法來訪問 WebGL 擴充套件。有關更多資訊,請參閱 WebGL 教程中的 使用擴充套件

注意: 此擴充套件同時適用於 WebGL1WebGL2 上下文。

常量

這些壓縮紋理格式由四個常量公開,並可用於兩個函式:compressedTexImage2D()compressedTexSubImage2D()

ext.COMPRESSED_RGB_S3TC_DXT1_EXT

DXT1 壓縮的 RGB 影像格式。

ext.COMPRESSED_RGBA_S3TC_DXT1_EXT

DXT1 壓縮的 RGB 影像格式,帶有開關式 alpha 值。

ext.COMPRESSED_RGBA_S3TC_DXT3_EXT

DXT3 壓縮的 RGBA 影像格式。與 32 位 RGBA 紋理相比,它提供了 4:1 的壓縮率。

ext.COMPRESSED_RGBA_S3TC_DXT5_EXT

DXT5 壓縮的 RGBA 影像格式。它也提供 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 批准的擴充套件規範

瀏覽器相容性

另見