2009-08-05 85 views
4

我已经有PVR纹理压缩工作,在我的iPhone游戏中工作都很开心,但是我在拼贴多个纹理时遇到了问题。基本上,我有一个非常大的背景,分成多个512x512的瓷砖,所有的PVR压缩。然后将它们放在一起看起来像一个大背景图像。 PVR的工作方式,因为它不知道它应该是压缩纹理,就好像它是一个非常大的纹理 - 即使用邻居的平铺信息来确定如何执行PVR压缩。PVR纹理压缩拼贴(暴露边缘上下文)

我能想到也许有一些方法可以做到这一点。

1)以某种方式告诉texturetool命令行程序以适应其他将要相邻的图像。
2)使用命令行程序生成一个代表整个图像的巨大PVR纹理,然后以某种方式将字节分成多个图像 - 可能不可能。
3)做一些很好地融合边缘的OpenGL ES技巧。
4)做一些技巧,我在每个瓷砖中有冗余信息,然后在绘制纹理时剪切这些区域(请不要)。

希望我可以做1,2或3,或者有一些其他众所周知的解决方案。

回答

4

我最终选择了4.我不认为这是PVRTC不合适的情况 - 事实上它几乎是必需的。当我一次在内存中共获得24个512x512纹理时(代表非常大的背景和前景),将它们解压缩为自杀。所以我只是简单地使用了PVR压缩,然后我在我的平铺算法中编辑了几行代码,以便它们在每一端的15个像素上重叠和修剪。瞧,看起来不错。花了几天时间,很烦人,但我认为这对于iPhone上需要非常大的平铺背景的人来说是一个不错的选择。

+0

谁给了我-1,为什么? – Eli 2009-08-19 21:30:09

1

我最好的建议,但不是你问什么,是知道什么时候PVRTC不合适。到目前为止,最简单的解决方案就是不使用PVRTC来处理这些瓦片。我花了很多时间尝试弯曲PVRTC以适应它不适合的情况。

这就是说,

当使用PVRTC,纹理始终假定为区块(与自身),从而在右侧边缘像素影响的左边缘的像素(相同的与顶部&底部)。所以选择1或2可能不会起作用。

一种可能性是向瓷砖添加一个alpha通道,并允许它们在边缘上淡出,这样当它们重叠时,它们就会相互淡入。请记住,PVRTC通常会逐渐消失,逐渐效果更好。硬α边缘在PVRTC中通常具有伪像。