2014-09-06 137 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指出。