Android-WebGL上有什么纹理压缩格式?
它通过使用
gl.getSupportedExtensions();
随着2017年7月15日检查webglstats.com它声称的是给设备上的GPU /驱动器/浏览器
您可以查看特定设备
没有机器人设备支持设备的s3tc
2%苏pport设备pvrtc
97%支持设备etc1
97%支持设备etc
48%支持设备atc
46%的支持astc
我99%肯定它并不完全准确,因为我非常确定NVidia Shield支持s3tc,但也许没有人使用NVidia Shield访问过使用webglstats的网站。com或可能的用户数量是如此之小,它下降到0%
什么是我的最佳选择选择纹理压缩格式,将在现代Android手机上工作?
你应该可以做的是支持所有的etc1等,atc,astc。存储你的资产在文件夹或扩展等
assets/etc1/image1
assets/etc1/image2
assets/astc/image1
assets/astc/image2
...
或
assets/image1.etc1
assets/image2.etc1
assets/image1.astc
assets/image2.astc
... 在启动查询的格式用户的设备支持
然后,选择最好的之一(如可能最小的最好一些定义大小)
例
// in order of best compression to worst
const compressions = [
{ ext: "astc", name: "WEBGL_compressed_texture_astc" },
{ ext: "etc1", name: "WEBGL_compressed_texture_etc1" },
...
];
let imageExtension = ""; // pick a default?
for (let i = 0; i < compressions.length; ++i) {
const info = compressions[i];
const ext = gl.getExtension(info.name);
if (ext) {
imageExtension = info.ext;
break;
}
}
function loadImage(baseUrl) {
...
img.src = baseUrl + imageExtension;
...
}
或上面的其他变体,您可以找出用户的设备需要什么,然后使用它。