2011-05-30 45 views
0

我有一個本機庫,用於從iPhone移植到Android的遊戲。我們的目標操作系統版本是1.6,並且遊戲整體效果非常好,沒有任何優化。但是,當我啓用任何種類的優化(無論是-O1,-O2還是-O3)時,一切(輸入,圖形,聲音,遊戲代碼),但圖形都能正常工作。編譯庫優化休息圖形

這裏就是我應該得到:

http://i56.tinypic.com/2yzn4o6.png

而且我得到什麼:

http://i51.tinypic.com/raqogl.png

我已經試圖讓對NDK郵件列表一些幫助但我沒有回覆。我甚至嘗試將紋理髮送爲純白色,他們的行爲更加奇怪,在加載屏幕中,小白色三角形「掉落」,直到整個屏幕變成白色,而我只繪製了幾個三角形。

我正在使用vs-android進行編譯,但即使使用NDK構建,我也遇到同樣的問題。我還驗證了我從紋理中獲得的像素數據是100%有效的(我在調試時將其轉儲到SD卡上的PNG上)。

任何幫助表示讚賞。

+0

我想你將不得不把它縮小到一個特定的代碼塊,在別人真的可以幫助你之前打破優化。如果您在最近的NDK中使用GCC 4.4.x,則可以通過改變源文件中的優化來縮小它的範圍:http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas .html#Function-Specific-Option-Pragmas – 2011-05-30 15:47:58

+0

根據一位同事給我的建議,我啓用了對所有文件的優化,同時在任何可能導致問題的可疑文件上禁用了它們。所以我在我的紋理處理文件上這樣做了,經過測試解決了這個問題。 – 2011-05-30 18:58:51

回答

0

顯然有些編譯器可能會錯誤地優化文件並導致這些圖形錯誤。如果你有其他平臺上沒有的錯誤,例如我的情況,OpenGL錯誤,如果你先禁用所有文件的優化,然後重新啓用它們,你可以在Android上解決它你會發現源文件負責你的錯誤。在我的情況下,這是一個OpenGL紋理文件,它在某種程度上被錯誤地編譯。