WEBGL_compressed_texture_astc 扩展
WEBGL_compressed_texture_astc 扩展是 WebGL API 的一部分,它将 自适应可伸缩纹理压缩 (ASTC) 压缩纹理格式暴露给 WebGL。
有关更多信息,请参阅 NVIDIA 的文章 使用 ASTC 纹理压缩来处理游戏资源。
可以使用 WebGLRenderingContext.getExtension() 方法来访问 WebGL 扩展。有关更多信息,请参阅 WebGL 教程中的 使用扩展。
实例方法
此扩展公开了一个新方法。
ext.getSupportedProfiles()-
返回一个字符串数组,其中包含实现所支持的 ASTC 配置文件名称。
常量
压缩纹理格式通过 28 个常量公开,并可用于两个函数:compressedTexImage2D() 和 compressedTexSubImage2D()。
| 常量 | 块 | 每像素位数 | ArrayBuffer byteLength |
如果宽度和高度为 512,则为字节数 |
|---|---|---|---|---|
ext.COMPRESSED_RGBA_ASTC_4x4_KHR
|
4x4 | 8.00 |
floor((width + 3) / 4) * floor((height + 3) / 4) * 16
|
262144 |
ext.COMPRESSED_RGBA_ASTC_5x4_KHR
|
5x4 | 6.40 |
floor((width + 4) / 5) * floor((height + 3) / 4) * 16
|
210944 |
ext.COMPRESSED_RGBA_ASTC_5x5_KHR
|
5x5 | 5.12 |
floor((width + 4) / 5) * floor((height + 4) / 5) * 16
|
169744 |
ext.COMPRESSED_RGBA_ASTC_6x5_KHR
|
6x5 | 4.27 |
floor((width + 5) / 6) * floor((height + 4) / 5) * 16
|
141728 |
ext.COMPRESSED_RGBA_ASTC_6x6_KHR
|
6x6 | 3.56 |
floor((width + 5) / 6) * floor((height + 5) / 6) * 16
|
118336 |
ext.COMPRESSED_RGBA_ASTC_8x5_KHR
|
8x5 | 3.20 |
floor((width + 7) / 8) * floor((height + 4) / 5) * 16
|
105472 |
ext.COMPRESSED_RGBA_ASTC_8x6_KHR
|
8x6 | 2.67 |
floor((width + 7) / 8) * floor((height + 5) / 6) * 16
|
88064 |
ext.COMPRESSED_RGBA_ASTC_8x8_KHR
|
8x8 | 2.00 |
floor((width + 7) / 8) * floor((height + 7) / 8) * 16
|
65536 |
ext.COMPRESSED_RGBA_ASTC_10x5_KHR
|
10x5 | 2.56 |
floor((width + 9) / 10) * floor((height + 4) / 5) * 16
|
85696 |
ext.COMPRESSED_RGBA_ASTC_10x6_KHR
|
10x6 | 2.13 |
floor((width + 9) / 10) * floor((height + 5) / 6) * 16
|
71552 |
ext.COMPRESSED_RGBA_ASTC_10x8_KHR
|
10x8 | 1.60 |
floor((width + 9) / 10) * floor((height + 7) / 8) * 16
|
53248 |
ext.COMPRESSED_RGBA_ASTC_10x10_KHR
|
10x10 | 1.28 |
floor((width + 9) / 10) * floor((height + 9) / 10) * 16
|
43264 |
ext.COMPRESSED_RGBA_ASTC_12x10_KHR
|
12x10 | 1.07 |
floor((width + 11) / 12) * floor((height + 9) / 10) * 16
|
35776 |
ext.COMPRESSED_RGBA_ASTC_12x12_KHR
|
12x12 | 0.89 |
floor((width + 11) / 12) * floor((height + 11) / 12) * 16
|
29584 |
示例
js
const ext = gl.getExtension("WEBGL_compressed_texture_astc");
const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.compressedTexImage2D(
gl.TEXTURE_2D,
0,
ext.COMPRESSED_RGBA_ASTC_12x12_KHR,
512,
512,
0,
textureData,
);
规范
| 规范 |
|---|
| WebGL WEBGL_compressed_texture_astc 扩展规范 |
浏览器兼容性
加载中…