我正在开发一款多平台游戏。它使用OpenGL ES 2.0,整个场景在iOS和Windows上使用Mali的OpenGL ES模拟器完美呈现。
我最近将它移植到Mac OSX。我必须做的唯一改变是让glCompileShader忽略lowp,mediump和highp。除此之外,对于大多数事物似乎都可以正常工作,除了所有模型渲染内外。
我已经尝试过以下方法来解决它而没有任何运气..
完全禁用剔除 在正面,背面,正面和背面之间切换剔除模式 将前面切换为CW和CCW
启用,禁用深度缓冲区 为depthfunc尝试less,greater,lequal和gequal 在投影矩阵中反转近处和远处
我能想到的另一件事就是用手。我的场景是在左手坐标系中创作的。我最终翻转视图矩阵的z轴来补偿它。因此,在OSX上,我尝试向后翻转视图矩阵并尝试使用LH和RH投影矩阵组合,结果表现如预期,但内部渲染的模型除外。
此时我完全难过了。
OpenGL ES和OpenGL之间似乎有些默认状态不同。 想法?
答案 0 :(得分:1)
发现了这个问题。我没有有效的深度缓冲区。出于某种原因,我用来设置OpenGL上下文的示例代码忘记了深度缓冲区。
感谢Reto Koradi指出它。