我的 PVR 纹理压缩在我的 iPhone 游戏中运行良好,但在将多个纹理平铺在一起时遇到了问题。基本上,我有一个非常大的背景,它被分成多个 512x512 的图块,所有的 PVR 都经过压缩。然后将它们绘制在一起,看起来像一张大背景图像。 PVR 的工作方式,因为它不知道它应该压缩纹理,就好像它是一个非常大的纹理一样 - 即使用邻居的平铺信息来确定如何执行 PVR 压缩。
我可以想到几种方法来做到这一点。
1) 以某种方式告诉texturetool 命令行程序以适应将相邻的其他图像。
2) 使用命令行程序生成代表整个图像的巨大 PVR 纹理,然后以某种方式将字节拆分为多个图像 - 可能是不可能的。
3) 做一些 OpenGL ES 技巧,很好地混合边缘。
4)做一些棘手的事情,我在每个图块中都有冗余信息,然后在绘制纹理时剪裁这些区域(请不要)。
希望我可以做 1、2 或 3,或者还有其他一些众所周知的解决方案。
最佳答案
我最终选择了选项 4。我不认为这是 PVRTC 不合适的情况——事实上,它几乎是必需的。当我一次在内存中总共有 24 个 512x512 纹理(代表一个非常大的背景和前景)时,将它们放在未压缩中是自杀。所以我只是像往常一样使用 PVR 压缩,然后在我的平铺算法中编辑了几行代码,以便它们在每一端重叠和修剪 15 个像素。瞧,看起来很棒。花了几天时间,很烦人,但我认为对于需要在 iPhone 上使用非常大的平铺背景的人来说,这是一个不错的选择。
关于iphone - PVR 纹理压缩平铺(暴露边缘上下文),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1233652/