Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos iOS上的OpenGL ES 2.0移植到Mac OS X上的OpenGL渲染模型_Macos_Opengl_Opengl Es 2.0 - Fatal编程技术网

Macos iOS上的OpenGL ES 2.0移植到Mac OS X上的OpenGL渲染模型

Macos iOS上的OpenGL ES 2.0移植到Mac OS X上的OpenGL渲染模型,macos,opengl,opengl-es-2.0,Macos,Opengl,Opengl Es 2.0,我在做一个多平台的游戏。它使用OpenGL ES 2.0,整个场景在iOS和windows上使用马里的OpenGL ES仿真器进行完美渲染 我最近把它移植到MacOSX上。我唯一需要做的改变就是让glCompileShader忽略lowp、mediump和highp。除此之外,在大多数情况下,除了所有模型由内而外的渲染外,其他一切似乎都正常工作 我已经尝试了以下方法来修复它,但没有任何运气 完全禁用剔除 在前、后、前和后之间切换消隐模式 开关正面为顺时针和逆时针 启用、禁用深度缓冲区 为dept

我在做一个多平台的游戏。它使用OpenGL ES 2.0,整个场景在iOS和windows上使用马里的OpenGL ES仿真器进行完美渲染

我最近把它移植到MacOSX上。我唯一需要做的改变就是让glCompileShader忽略lowp、mediump和highp。除此之外,在大多数情况下,除了所有模型由内而外的渲染外,其他一切似乎都正常工作

我已经尝试了以下方法来修复它,但没有任何运气

完全禁用剔除 在前、后、前和后之间切换消隐模式 开关正面为顺时针和逆时针

启用、禁用深度缓冲区 为depthfunc尝试更少、更大、lequal和gequal 在投影矩阵中反转近距离和远距离

我唯一能想到的另一件事是用手习惯。我的场景是在左手坐标系中创作的。我最终翻转视图矩阵的z轴以进行补偿。因此,在OSX上,我尝试翻转视图矩阵,尝试LH和RH投影矩阵组合,结果与预期一样,只是模型呈现由内而外

在这一点上,我完全被难住了

看起来OpenGL和OpenGL之间的默认状态是不同的。
想法?

发现了问题。我没有有效的深度缓冲区。出于某种原因,我用来设置OpenGL上下文的示例代码忘记了深度缓冲区


感谢雷托·科拉迪指出这一点。

奇怪。通常情况下,只要您使用一个通用的功能子集,代码就会顺利进行。看起来是不是所有的东西都在屏幕上变换到了错误的位置?还是只有正面和背面翻转?或者事情是否在正确的位置,但只有深度测试没有正常工作?嗯,一切都是胡乱猜测,但我想你验证了你确实有深度缓冲区?你是对的,我用来设置OpenGL上下文的示例代码忘记初始化深度缓冲区。这就是问题所在。