GLFW 无法在 OSX 中打开窗口

GLFW Fails to Open Window in OSX

本文关键字:开窗口 OSX GLFW      更新时间:2023-10-16

我有以下代码:

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的视频卡。

我认为它可能使用的是集成的英特尔 GPU 而不是 nVidia,但据我所知,GLFW 将强制正确的 GPU 进行渲染。

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

有什么想法吗?

更新:如果删除所有glfwWindowHint()调用,则会创建窗口,但着色器不兼容。我假设如果删除这些,GLFW 会自动选择一个上下文,这恰好与带有version 330 core的着色器不兼容。

问题归结为在 GLFW 中设置向前兼容标志。这个答案导致了拨打以下电话的答案:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

这也显示在GLFW常见问题解答中。