我对 Android 设备上 ETC1 Textue 压缩的可用性(或不可用)有点困惑。
我看到这个(来自Android Docs)在各个地方被引用:
注意:大多数 Android 设备都支持 ETC1 格式,但不能保证可用。若要检查设备上是否支持 ETC1 格式,请调用 ETC1Util.isETC1Supported() 方法。
我也相信(如果我错了,请纠正我)ETC1支持是由OpenGL ES 2.0强制要求的。
因此,有人可以澄清一下,文档中的上述声明是否仅仅意味着 ETC1 压缩支持不保证可用 OpenGL ES 1.x,设备,但可以通过扩展获得,因此在这些设备上您应该调用 ETC1Util.isETC1Supported() 方法来检查可用性。
如果我的假设是正确的,我也会假设我可以 100% 保证 ETC1 在我的所有目标设备上都可用(因为我的应用程序使用 OpenGL ES 2.0,我检查应用程序内的可用性)。因此,我不需要检查ETC1Util.isETC1Supported()?
或者也许我误解了它,我仍然需要检查?
基于官方 Android 文档,保证支持 ES 2.0 的设备也支持 ETC1。我发现至少有两页说明:
-
在为不同的 GL 纹理创建多个 APK 页面上,在"列出您的要求"下:
请注意,您的某个 APK 通常最好支持 ETC1,因为所有支持 OpenGL ES 2.0 规范的 Android 设备都支持该纹理格式。
在 包含 supports-gl-texture 文档的页面上,在带有各个格式的表格中,它说
GL_OES_compressed_ETC1_RGB8_texture
:爱立信纹理压缩。在 OpenGL ES 2.0 中指定,并在支持 OpenGL ES 2.0 的所有 Android 设备中可用。