WEBGL_compressed_texture_etc 擴充套件
WEBGL_compressed_texture_etc 擴充套件是 WebGL API 的一部分,它公開了 10 種 ETC/EAC 壓縮紋理格式。
壓縮紋理可減少 GPU 儲存紋理所需的記憶體量,從而允許使用更高解析度的紋理或更多相同解析度的紋理。
可以使用 WebGLRenderingContext.getExtension() 方法來訪問 WebGL 擴充套件。有關更多資訊,請參閱 WebGL 教程中的 使用擴充套件。
常量
壓縮紋理格式透過 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 上下文中啟用它才能使用。