在OS X Lion上,glfwGetGLVersion()返回2.1

glfwGetGLVersion() returns 2.1 on OS X Lion

本文关键字:返回 glfwGetGLVersion OS Lion      更新时间:2023-10-16

我试图在Lion上设置OpenGL 3.2上下文。我用下面的代码来设置窗口:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
if (!glfwInit())
    return -1;
if (!glfwOpenWindow(640, 480, 8, 8, 8, 0, 0, 0, GLFW_WINDOW))
    return -1;
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
// Get OpenGL details
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
std::cout << "GL Version: " << major << "." << minor << "." << rev << std::endl;

GL版本是2.1,即使我运行的是OS X Lion和AMD Radeon 6750M,显然支持3.2。另外,我在这里运行了这段返回3.2的C代码。我使用GLFW 2.7.8。有人知道这是怎么回事吗?

原来我需要在调用glfwOpenWindowHint之前调用glfwInit():

if (!glfwInit())
    return -1;
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
if (!glfwOpenWindow(500, 500, 8, 8, 8, 0, 0, 0, GLFW_WINDOW))
    return -1;