0

一段时间以来,我一直在尝试使用 ETC1(特别是 PKM 文件)进行纹理压缩。我试图做到这一点而不必升级到 OpenGL ES 2,所以我一直在使用多纹理。

我现在(终于)有了多重纹理工作,但问题是它的行为不像人们期望的那样,我想我已经弄清楚了原因。在创建 PKM 时,您最终会得到仅包含颜色组件的 PKM,以及仅包含 Alpha 组件的 PKM。问题是 alpha PKM 似乎将 alpha 值存储在 RGB 通道中。黑色似乎代表完全透明,白色似乎代表完全不透明。

我的问题是:在使用多重纹理时,有没有办法将这些 RGB 值组合并转换为 alpha 值?如果不是,那么我看不到在 OpenGL ES 1.1 下使用 ETC1 和支持 alpha 的任何选项(如果我错了,请纠正我)。

4

1 回答 1

0

我也在不同的论坛上发布了这个问题,普遍的共识是这是不可能的。所以如果你想实现处理 alpha 的 ETC1 压缩,那么首先升级到 OpenGL ES 2 并使用 FragmentShaders。

我决定不这样做。对我来说真正有效的是只对我的图像使用 ETC1 压缩,而 Alpha 通道并不重要。对于其他重要的图像,我使用量化来显着减小 PNG 的大小。您可以使用 tinypng.org 执行此操作,也可以在本地安装 pngquant。我做了后者,并编写了一个 bash 脚本,该脚本对某些图像使用 ETC1 压缩,对其他图像使用 pngquant 并将它们复制到我的资产目录中——因此只需运行一个脚本即可为我完成所有工作。

于 2014-06-14T00:21:02.310 回答