我不小心更新了我的 Mac,OpenGL 现在在最新的 MacOS Mojave 中已被弃用。我正在使用 OpenGL + GLUT(我知道这很旧,但我只需要一个简单的程序)并在终端上运行(不使用 Xcode)。使用在 Sierra 中完美运行的相同程序,我在 Mojave 中收到了很多 OpenGL 已弃用的警告,并设法使用以下命令抑制所有警告-Wno-deprecated-declarations
,但现在我只看到黑屏。
Mojave 更新后,我在 OpenGL 上读到了很多与黑屏相同的问题,例如OpenGL 上黑屏 https://stackoverflow.com/questions/52657002/black-screen-on-opengl , and Mac 莫哈维 + opengl
问问题 https://stackoverflow.com/questions/52509427/mac-mojave-opengl。但到目前为止,他们都没有接受答案,并且提供的答案对我不起作用。
这是我的主循环:
Code :
static void mainLoop(void)
{ glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_FRAMEBUFFER_SRGB);
argDrawMode2D(vp); //draw to the screen
char string[256];
glColor3f(1,1,1);
sprintf(string, "Some strings", string1 );
argDrawStringsByIdealPos( string, 10.0, 25.0 );
argSwapBuffers(); //clear the buffer
glFlush();
}
我有 2 个问题:
-
您对如何解决黑屏问题有什么建议吗?我已经尝试过但仍然出现黑屏:
Change glFlush()
into glutSwapBuffers()
无需打电话即可冲水
更改glClear(GL_COLOR_BUFFER_BIT)
into glClear(GL_COLOR_BUFFER_BIT
| GL_DEPTH_BUFFER_BIT)
(这会引起更多警告)。我也尝试将颜色设置为glClearColor(255,255,255,0)
(白色),但清除颜色缓冲区后,只有黑屏。所以 glClear 不起作用。
尝试使用 reshape 来调整窗口大小。
将终端的 Xcode 编译器更新到最新版本(Beta)
-
我正在使用 OpenGL 的伽玛校正glEnable(GL_FRAMEBUFFER_SRGB)
,在莫哈韦沙漠之后我面临着这个
“断言失败:(值 >= 0.0f && 值
openGL gamma 校正不再起作用了吗?
有什么建议吗?
[更新1]
上面的步骤 3:尝试使用 reshape 来调整窗口大小。
在我更改为全屏后,这个似乎可以工作一点,如下莫哈韦“黑客” http://people.bath.ac.uk/abscjkw/ComputerPrograms/C++programs/OpenGL/MojaveOpenGL.cpp来自巴斯大学,将窗口大小调整为初始大小以外的其他尺寸。当我设置为另一个尺寸(更小/更大)时它失败了,但是当我使用设置为全屏时它失败了glutFullScreen();
,我的屏幕已渲染,到目前为止,帧过渡并不平滑,我仍在处理它。
另外,我将 fps 设置为 60fps 并将其打印出来。在这次黑客攻击之后,尽管我的 Mac 刷新率只有 90Hz,但我在这里获得了 100-200 fps 的随机 fps。这是因为resize命令,当我注释掉resize命令时,我得到了黑屏,但终端中打印的fps是正确的(大约60fps)。我意识到这个黑客在未来也是不可靠的。因此,这里仍然需要建议,或其他解决方案,而不是调整大小。
[更新2]
我尝试使用 GLFW 更改我的整个项目。即使使用 GLFW,仍然存在同样的黑屏问题。因此这不是 API 问题。
[更新3]
尝试彻底卸载 XCode 10(随 Mojave 更新一起提供)。然后安装 XCode 9.41 (Sierra) 和 Command Tools 9.41。截至目前,GLFW 有效,而 GLUT 仍然不起作用。