我有以下代码:
glfwWindowHint(GLFW_SAMPLES,4); // 4x antialiasing glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3); glfwWindowHint(GLFW_CONTEXT_VERSION_MInor,3); glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); // Open window and create OpenGL context GLFWwindow * window; window = glfwCreateWindow(1024,768,"OpenGL Testing",NULL,NULL); if(window == NULL) { fprintf(stderr,"Failed to open GLFW Window.\n"); glfwTerminate(); return -1; }
它在我的桌面上在Ubuntu和Windows上运行良好,但在运行OSX的笔记本电脑上运行失败.我认为这是一个问题,笔记本电脑不支持这个版本的OpenGL,但它支持最高4.1的视频卡.
我认为它可能使用集成的intel GPU而不是nVidia,但正如我从我所看到的那样理解,GLFW将强制使用正确的GPU来进行渲染.
如果我将上下文更改为2.1,一切似乎都有效,但是着色器不兼容.
有任何想法吗?
更新:如果删除了所有glfwWindowHint()调用,则会创建窗口,但着色器不兼容.我假设如果这些被删除,GLFW会自动选择一个上下文,它恰好与版本为330 core的着色器不兼容.
解决方法
问题归结为在GLFW中设置向前兼容性标志.
This answer导致了以下呼叫的答案:
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。