GLFW无法在OSX中打开窗口

dan*_*ood 6 c++ opengl glfw

我有以下代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

它在我的桌面上在Ubuntu和Windows上运行良好,但在运行OSX的笔记本电脑上运行失败.我认为这是与笔记本电脑不支持这个版本的OpenGL的一个问题,但它高达4.1的显卡支持.

我认为它可能使用集成的intel GPU而不是nVidia,但正如我从我所看到的那样理解,GLFW将强制使用正确的GPU来进行渲染.

如果我将上下文更改为2.1,一切似乎都有效,但是着色器不兼容.

有任何想法吗?

更新:如果glfwWindowHint()删除了所有调用,则会创建窗口,但着色器不兼容.我认为,如果这些被删除,GLFW自动选择一个背景下,这恰好是与着色器不兼容version 330 core.

dan*_*ood 11

问题归结为在GLFW中设置向前兼容性标志.这个答案导致了以下呼叫的答案:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

这也在GLFW FAQ中显示.