2009-08-05 86 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中通常具有僞像。