glfwGetGLVersion()返回2.1上的OS X Lion

问题描述:

我想在Lion上设置一个OpenGL 3.2上下文。我得到这个代码的窗口设置:glfwGetGLVersion()返回2.1上的OS X Lion

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。另外,我跑了C代码here这个返回3.2的位。我正在使用GLFW 2.7.8。有人知道这里发生了什么吗?

+1

'GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE'请停止这样做。 –

+0

您运行此的PC是否具有集成GPU以及专用GPU?如果确实如此,您可能需要明确告诉AMD驱动程序使用您的主卡。 –

+0

@NicolBolas为什么他不应该将GLFW_OPENGL_FORWARD_COMPAT设置为GL_TRUE? – Grimmy

事实证明,我需要调用glfwInit()调用之前glfwOpenWindowHint

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;