无法使用GLFW设置GL标志

App*_*ell 2 c++ opengl glfw

尝试设置以下一个或多个OpenGL标志:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
Run Code Online (Sandbox Code Playgroud)

让glfwOpenWindow失败.为什么会这样?

[编辑]这似乎与主要= 3和MINOR = 2的工作,但代码上(的MacBook视网膜Mid2012)运行在笔记本电脑可以运行多达OpenGL的4.1(英特尔HD 4000有OpenGL 4.0,英伟达GT 650M拥有4.1) .[/编辑]

此外,虽然它可能不相关,但glfwGetGLVersion返回0所有三个参数.

完整示例代码如下:

int main(int argc, char * argv[])
{
    if(!glfwInit()) {
        return EXIT_FAILURE;
    }

    glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
    //glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
    //glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
    //glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    {
        int *major = new int, *minor = new int, *rev = new int;
        glfwGetGLVersion(major, minor, rev);
        std::cout << *major << " " << *minor << " " << *rev << std::endl;
        delete major;
        delete minor;
        delete rev;
    }

    if(!glfwOpenWindow(512,512,
                       8,8,8,
                       8,24,8,
                       GLFW_WINDOW)) {
        return EXIT_FAILURE;
            // APPLICATION EXITS HERE IF ONE OF THE FLAGS ARE SET.
    }

    while (glfwGetWindowParam(GLFW_OPENED)) {   
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers();
    }

    glfwTerminate();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 6

如果它是MacBook,你可能正在运行OSX.虽然您的显卡能够支持OpenGL 4.x,但OSX仅支持OpenGL 3.2.