ETC1 纹理压缩保证在 OpenGL ES 2.0 Android 设备上可用



我对 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 设备中可用。

最新更新