首页 文章

Mac Mojave opengl

提问于
浏览
7

Mac OS 10.14 Mojave刚刚发布,自6月以来,我们似乎是任何文档,表明您是否仍然可以使用OpenGL进行编译,或者Apple是否可以阻止或省略正确的开发库 . 我目前正在开发基于OpenGL的图形程序,如果编译将不再起作用,则无法进行更新 . 有没有人测试过这个?

编辑:有没有其他人分享Esenthel的经验?

9 回答

  • 0

    我在GLFW中的解决方法是在主绘制循环中调用show window .

    bool needDraw = true;
        if (needDraw) {
            glfwShowWindow(window);
            glfwHideWindow(window);
            glfwShowWindow(window);
            needDraw = false;
        }
    
  • 1

    更新后我也遇到了这个问题 . 我正在使用glfw . 实际上,创建的窗口可以在调整大小或移动它之后显示所需的内容 . 我在主循环中添加了 glfwSetWindowPos(window, 100, 100); 来移动它以获得临时解决方案 .

  • 0

    我可以编译,但是在更新到最新的Mojave和Xcode之后,我的OpenGL应用程序根本无法工作 .

    在一种情况下,我在系统GL呼叫期间挂起,在另一种情况下只是黑屏 . 输出中的一些错误与此处相同:https://stackoverflow.com/questions/52507950/unable-to-load-info-plist-error-xcode-10-under-macos-10-14-mojave#=

    我建议你不要更新 .

    我认为Xcode 10 OpenGL库中存在一些问题 .

  • 2

    代码在

    http://people.bath.ac.uk/abscjkw/ComputerPrograms/C++programs/OpenGL/MojaveOpenGL.cpp

    使用Xcode 10.0在Mojave中正常工作 . 窗口会自动调整大小以消除黑色 . OpenGL和GLUT框架从通常的位置/ System / Library / Frameworks添加到项目中

    克里斯

  • 1

    我正在使用GLEW,GLUT,OpenGL 2.0和SDL 2.我可以编译和运行我的OpenGL应用程序 . 但是我必须更改我的框架搜索路径以包括:

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks

    现在放置OpenGL和GLUT框架 Headers ,因为我在旧的搜索路径System / Library / Frameworks中找不到任何OpenGL / GLUT Headers (尽管框架仍然存在,但没有包含 Headers ) . 我还必须确保我的包含是GLUT / glut.h而不仅仅是glut.h.

    这给了我以下列形式的新警告信息:

    [default]无法加载Info.plist异常(eGPUOverrides)“和”已保存的启用噪声消除设置与默认设置相同(= 1)

    我还没有检查它们,它们的含义是什么 .

    真正让我烦恼的是Esenthel所说的,编译和运行应用程序后只有一个黑屏 . 我发现如果你拖动应用程序窗口(我没有使用全屏),那么动画就会开始显示 . 显然动画是在后台,所有代码都在评估,但是在我拖动窗口之前只有黑屏 .

    编辑:我正在使用Mojave和Xcode 10(不是测试版) .

  • 5

    我正在使用GLUT和OpenGL . 这个问题出现在Xcode 10.0和10.1 beta3上 .

    如果调整窗口大小,图形会在大多数时间出现 .

    所以我设计了一个使用reshape回调函数的解决方法 . 说我想激活1000x1000窗口 . 我用999x999激活它,然后在重塑时根据需要将其转换为1000x1000:

    void reshape (int width, int height){
        glutReshapeWindow (1000, 1000);
    }
    

    主要是:

    int main (int argc, char** argv)
    {
        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize( 999,999 );
        glutInitWindowPosition (0.0f, 0.0f);
        glutCreateWindow("example");
    
        glutReshapeFunc (reshape);
        glutDisplayFunc(draw);
        glutKeyboardFunc(keyboard);
        glutIdleFunc(idle);
    
        glutMainLoop();
        return 0;
    }
    

    由于重塑回调在显示之前被触发,因此它现在正在工作 .

  • 0

    某些OpenGL代码失败的原因是因为在Mojave中,您的视图会自动进行图层备份 . 如果您的代码正在测试此条件:

    [NSGraphicsContext currentContextDrawingToScreen]
    

    它将返回NO并且该条件下的代码将不会运行(即:屏幕上没有绘制任何内容) .

    不幸的是,你不能在Mojave中将WantsLayer设置为NO,它也行不通 .

  • 0

    通过下载Xcode 9.4.1“修复”了这个问题

    编译并使用OpenGL视图使我的应用程序正常工作 .

    我认为这与Layer-Backed Views有关 . 因为当我滚动我的OpenGL视图时,它正好在后面绘制了's became visible under some view.. and flickering. And I see it' . 但是当我停止滚动时 - 它会消失 .

  • 0

    截至今天(2018年10月21日),Mojave的OpenGL被窃听 . 您必须移动glfw窗口位置才能真正看到它的渲染内容 .

    渲染循环中的这个变通方法代码对我有用: if(!init) { int x,y; glfwGetWindowPos(window,&x, &y); glfwSetWindowPos(window,x+1,y); init = true; }

相关问题