我不小心更新了Mac,现在最新的MacOS Mojave中已弃用OpenGL。我正在使用OpenGL + GLUT(我知道这很旧,但是我只需要一个简单的程序)并在终端上运行(不使用Xcode)。使用在Sierra中可以正常运行的相同程序,我在Mojave中获得了许多OpenGL不推荐使用的警告,并设法使用-Wno-deprecated-declarations
抑制了所有警告,但是现在我只得到了黑屏。
在Mojave更新后,我在OpenGL上遇到了很多黑屏问题,例如Black screen on OpenGL和Mac Mojave + opengl Ask Question。但截至目前,他们都没有人接受答案,提供的答案对我不起作用。
这是我的主循环:
代码:
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个问题:
您对如何解决黑屏问题有何建议?我尝试过但仍然出现黑屏的内容:
将glFlush()
更改为glutSwapBuffers()
以刷新而无需调用
将glClear (GL_COLOR_BUFFER_BIT)
更改为glClear(GL_COLOR_BUFFER_BIT
| GL_DEPTH_BUFFER_BIT)
(这会引起更多警告)。另外,我尝试将颜色设置为glClearColor(255,255,255,0)
(白色),但是在清除颜色缓冲区后,只有黑色屏幕。因此glClear无法正常工作。
尝试使用重塑形状调整窗口大小。
将终端的Xcode编译器更新为最新版本(测试版)
我正在glEnable(GL_FRAMEBUFFER_SRGB)
中使用OpenGL的Gamma校正,而在莫哈韦沙漠之后,我正面临着
“断言失败:(值> = 0.0f &&值<= 1.0f),功能 LinearToSRGB“
openGL伽玛校正不再起作用了吗?
有什么建议吗?
[UPDATE 1]
上面的步骤3:尝试使用重塑形状调整窗口大小。
根据巴斯大学的Mojave 'hack',我改成了全屏显示后,似乎可以正常使用了,可以将窗口的大小调整为初始尺寸以外的其他尺寸。当我设置为另一个大小(较小/较大)时,它失败了,但是当我使用glutFullScreen();
设置为全屏时,我的屏幕已呈现,截至目前,帧过渡还不平滑,我仍在处理它。
此外,我将fps设置为60fps并打印出来。在这次黑客攻击之后,尽管我的Mac刷新率仅为90Hz,但我还是从100-200 fps中获得了随机fps。这是因为resize命令在注释掉resize命令时出现黑屏,但终端上打印的fps正确(大约60fps)。我知道这种破解将来也不可靠。因此,仍然需要此处的建议或其他解决方案,而不是调整大小。
[UPDATE 2]
我尝试使用GLFW更改整个项目。即使使用GLFW,仍然存在相同的黑屏问题。因此,这不是API问题。
[UPDATE 3]
试图彻底卸载XCode 10(Mojave更新随附)。然后安装XCode 9.41(Sierra)和Command Tools 9.41。截至目前,GLFW正常运行,而GLUT仍然无效。