2014-09-06 103 views
0

我正在開發一款多平臺遊戲。它使用OpenGL ES 2.0,整個場景在iOS和Windows上使用Mali的OpenGL ES模擬器完美呈現。iOS上的OpenGL ES 2.0移植到Mac OS X上的OpenGL渲染模型

我最近將它移植到Mac OSX上。我必須做的唯一改變是讓glCompileShader忽略lowp,mediump和highp。除此之外,對於大多數情況下,除了所有模型渲染出來之外,所有的東西都可以正常工作。

我已經嘗試了以下解決它沒有任何的運氣..

禁用共撲殺切換 正面,背面,正面和背面之間切換 前臉是順時針和逆時針

撲殺模式啓用,禁用深度緩衝區 對depthfunc嘗試less,greater,lequal和gequal 投影矩陣中的近遠反向

我唯一能想到的其他事情就是使用習慣。我的場景是用左手座標系創作的。我最終翻轉視圖矩陣的z軸來補償它。因此,在OSX上,我嘗試翻轉視圖矩陣並嘗試使用LH和RH投影矩陣組合,除了模型渲染外,結果的行爲與預期相同。

在這一點上我完全難住。

OpenGL ES和OpenGL似乎有些默認狀態是不同的。 想法?

+0

奇怪。通常情況下,只要您使用一個共同的功能子集,代碼就應該平穩地繼續運行。它看起來像是什麼都變成了屏幕上的錯誤位置?或者只有正面和背面翻轉?或者東西在正確的位置,但只有深度測試不能正常工作? – 2014-09-06 21:05:48

+1

好吧,一切都是瘋狂的猜測,但我想你證實你實際上有一個深度緩衝區? – 2014-09-06 21:06:20

+0

你是對的,我用來設置我的開放式gl上下文的示例代碼忘記了初始化深度緩衝區。那就是問題所在。 – Shammi 2014-09-06 22:10:47

回答

1

發現此問題。我沒有有效的深度緩衝區。出於某種原因,我用來設置OpenGL上下文的示例代碼忘記了深度緩衝區。

感謝Reto Koradi指出。