WEBGL_compressed_texture_etc 擴充套件

可用性有限

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

WEBGL_compressed_texture_etc 擴充套件是 WebGL API 的一部分,它公開了 10 種 ETC/EAC 壓縮紋理格式

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

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

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

常量

壓縮紋理格式透過 10 個常量公開,並可用於兩個函式:compressedTexImage2D()compressedTexSubImage2D()

ext.COMPRESSED_R11_EAC

單通道(紅色)無符號格式壓縮。

ext.COMPRESSED_SIGNED_R11_EAC

單通道(紅色)有符號格式壓縮。

ext.COMPRESSED_RG11_EAC

雙通道(紅色和綠色)無符號格式壓縮。

ext.COMPRESSED_SIGNED_RG11_EAC

雙通道(紅色和綠色)有符號格式壓縮。

ext.COMPRESSED_RGB8_ETC2

壓縮沒有 alpha 通道的 RGB8 資料。

ext.COMPRESSED_RGBA8_ETC2_EAC

壓縮 RGBA8 資料。RGB 部分的編碼方式與 RGB_ETC2 相同,但 alpha 部分單獨編碼。

ext.COMPRESSED_SRGB8_ETC2

壓縮沒有 alpha 通道的 sRGB8 資料。

ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC

壓縮 sRGBA8 資料。sRGB 部分的編碼方式與 SRGB8_ETC2 相同,但 alpha 部分單獨編碼。

ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2

類似於 RGB8_ETC,但具有 alpha 通道的穿透能力,這意味著可以將其完全設定為不透明或透明。

ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2

類似於 SRGB8_ETC,但具有 alpha 通道的穿透能力,這意味著可以將其完全設定為不透明或透明。

示例

js
const ext = gl.getExtension("WEBGL_compressed_texture_etc");

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

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

規範

規範
WebGL WEBGL_compressed_texture_etc 擴充套件規範

瀏覽器相容性

相容性說明

  • 此擴充套件在 Firefox 46 到 Firefox 51 版本中名為 WEBGL_compressed_texture_es3,曾預設在 WebGL 2 上下文中可用 - 現在已不再是這樣。您需要同時在 WebGL 1 和 WebGL 2 上下文中啟用它才能使用。

另見