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 部分的编码方式与
SRGB_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 扩展规范 |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
兼容性说明
- 此扩展从 Firefox 46 到 Firefox 51 被称为
WEBGL_compressed_texture_es3
,并且以前默认在 WebGL 2 上下文中可用——现在不再是这种情况。您必须在 WebGL 1 和 WebGL 2 上下文中都启用它,才能使用它。