2013-02-22 48 views
0

我打包了幾個單獨的精靈,並用Zwoptex生成了一個大精靈2048 * 2048的大小。但我縮小比例以匹配每個iOS設備,例如iPad HD的2048 * 2048,iPhone的512 * 512等。如何防止在舊iOS設備上使用Zwoptex生成sprite-sheet渲染像素出血?

我發現Zwoptex中的「間距像素」選項會影響設備上的精靈渲染結果。該值意味着每個精靈包裝在精靈表內的空間(以像素爲單位)。例如,如果我將該值設置得太低,那麼在更新或更好的設備以及較舊的設備上出現像素出血的可能性會更大。但是如果我增加這個值,機會就會降低,並且某個足夠高的值,像素出血(希望)不會發生。

無論如何,我將值設置爲17-20左右,這真的很高,它消耗精靈表上的寶貴空間。結果是,在iPhone模擬器上,仍然存在問題。

由於我們只能限制某些設備從某些iOS版本安裝遊戲,但iPhone 3GS仍然可以更新到最新版本,因此我需要解決此問題。

因此,我想知道如何防止從iPhone到iPad(包括視網膜)在內的所有iOS設備發生像素滲血問題的解決方案。 在精靈之間選擇「間距像素」的某個值以便在渲染時消除問題時,最好了解任何最佳實踐或實際解決方案。

回答

2

如果只有模擬器顯示那些工件,那麼通過所有的方法來忽略它們!你的用戶都不會在模擬器中運行你的應用程序,他們會嗎?模擬器並不完美。

圍繞每個紋理圖集精靈幀2個像素的間距足以(並且通常推薦)去除由像素滲色引起的所有僞像。如果你仍然看到文物,它們不是間距太小的直接原因。他們不能。

我不確定Zwoptex,你真的不得不手動創建每個縮小版本的紋理圖集?你可能正在做一些事情。嘗試TexturePacker,如果文物消失就不會感到驚訝。

例如,一種類型的工件是由於未將對象放置在整數位置而導致的。如果兩個對象的位置類似(1.23545,10.0)和(41.23545,10.0),則可能會在兩個對象之間看到間隙(通常是黑線)。使用整數座標(1,10)和(41,10)可以解決問題。難點在於這種方式一直沿着層次結構進行,如果這些對象的父節點也處於非整數位置,則仍然可以體驗此行間距工件。

如果您搜索一下,您會發現許多關於cocos2d工件的因果討論。請記住一點:不要使用CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL宏。這不是一個解決辦法,它甚至不會接近。它有點修復非整數位置人爲因素,並引入另一個(更糟糕的恕我直言):運動過程中的別名/閃爍。

+0

我使用該程序爲我自動生成不同的spritesheet版本,它適用於iPad HD,iPad和iPhone SD。 我測試了遊戲主要在iPad 2上,但我手邊沒有iPhone 3GS,所以我偏向於信任模擬器。無論如何,我會在真實設備上嘗試一下,如果沒有解決,那麼我將查看CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL值以查看它是否設置,然後是最後一個,我會看看TexturePacker是否可以幫助我。 當我完成後,我會盡快回復您。謝謝。 – haxpor 2013-02-22 16:39:09

+1

更新: 僅供參考:我沒有啓用該宏。 使用TexturePacker解決了我的問題。 使用Zwoptex生成多個分辨率的Spritesheet,特別是較小的尺寸(12.5%),事實證明,分辨率不是POT,而TexturePacker檢測到這一點。 無論如何,我嘗試使用TexturePacker生成的NPOT spritesheet,並且沒有任何像素出血。我想我會考慮切換使用這個程序。 謝謝! – haxpor 2013-02-26 16:31:12

相關問題