2011-02-04 20 views
2

我使用iPad上一個OpenGL紋理,並得到設備可怕的文物,而模擬器顯示所有完美平穩。我相信iPhone會顯示相同的文物。視覺假象 - 但不是在模擬器

如果我看一下頭文件,我會看到一旦我包含OpenGLES/ES2/gl.h,並且在另一個文件OpenGLES/ES1/*。h中。這可能是一個問題嗎?

或者什麼可能是設備上的工件的原因?

模擬器:

screenshot from simulator

真實的設備:

screenshot from real device

+1

如果你沒有導入正確的頭文件,你的應用程序根本就不會編譯和運行,所以沒有了。你如何繪製紋理?你看到了什麼樣的文物(別名等)? – 2011-02-04 18:33:42

+0

你還可以發佈它應該看起來像什麼(模擬器版本)?這可能有助於診斷正在發生的事情。 – 2011-02-04 20:00:48

回答

1

如果您在使用ES 2.0,則第一個猜測是,你有一個精度的問題。 highp,mediump和lowp GLSL精度說明符是提示,而不是絕對命令,因爲它們指定了最低要求的精度。模擬器很可能比您明確要求的更精確,但設備不是。

如果你對此沒有科學,那麼試着將所有事情都作爲測試,然後慢慢回撥下來,並憑經驗檢查結果。

1

它可能是編譯期間XCode應用的PNG優化(嘗試關閉它);看到How can I skip compressing one PNG?

雖然你可以關閉PNG優化/壓縮在您的項目設置完全使用「壓縮PNG文件」(這是可見只有當項目的基本SDK設置爲設備SDK,而不是一個模擬器SDK),你不想這樣做!請閱讀上面的鏈接,詳細瞭解爲什麼,但其優點是,優化讓iPhone跳過一些數學運算,減慢PNG顯示速度。

Xcode將只優化它知道的PNG圖像 文件。爲了防止 特定的PNG被優化, 您更改其文件類型,以便Xcode否 知道它是一個PNG。

  1. 在項目窗口中選擇文件。
  2. 選擇文件 - >獲取信息。
  3. 在常規選項卡上,將文件類型從image.png更改爲文件。
相關問題