更新到MacOs Mojave 10.14之后的OpenGL黑屏和Gamma校正?

时间:2018-10-31 09:05:17

标签: c macos opengl macos-mojave

我不小心更新了Mac,现在最新的MacOS Mojave中已弃用OpenGL。我正在使用OpenGL + GLUT(我知道这很旧,但是我只需要一个简单的程序)并在终端上运行(不使用Xcode)。使用在Sierra中可以正常运行的相同程序,我在Mojave中获得了许多OpenGL不推荐使用的警告,并设法使用-Wno-deprecated-declarations抑制了所有警告,但是现在我只得到了黑屏。

在Mojave更新后,我在OpenGL上遇到了很多黑屏问题,例如Black screen on OpenGLMac 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个问题:

  1. 您对如何解决黑屏问题有何建议?我尝试过但仍然出现黑屏的内容:

    • glFlush()更改为glutSwapBuffers()以刷新而无需调用

    • 将glClear (GL_COLOR_BUFFER_BIT)更改为glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)(这会引起更多警告)。另外,我尝试将颜色设置为glClearColor(255,255,255,0)(白色),但是在清除颜色缓冲区后,只有黑色屏幕。因此glClear无法正常工作。

    • 尝试使用重塑形状调整窗口大小。

    • 将终端的Xcode编译器更新为最新版本(测试版)

  2. 我正在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)。我知道这种破解将来也不可靠。因此,仍然需要此处的建议或其他解决方案,而不是调整大小。

enter image description here

[UPDATE 2]

我尝试使用GLFW更改整个项目。即使使用GLFW,仍然存在相同的黑屏问题。因此,这不是API问题。

[UPDATE 3]

试图彻底卸载XCode 10(Mojave更新随附)。然后安装XCode 9.41(Sierra)和Command Tools 9.41。截至目前,GLFW正常运行,而GLUT仍然无效。

0 个答案:

没有答案