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 上下文中启用它才能使用。