2013-05-25 3 views
1

Я пытаюсь настроить контекст OpenGL 3.2 на Lion. У меня есть этот код, чтобы создать окно: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

Имеет ли компьютер, на котором выполняется этот запуск, встроенный графический процессор, а также выделенный? Если вам это потребуется, вам может потребоваться объяснение, чтобы драйвер AMD использовал вашу основную карту. –

+0

@NicolBolas Почему он не должен устанавливать GLFW_OPENGL_FORWARD_COMPAT в GL_TRUE? – Grimmy

ответ

1

Оказывается, мне нужно позвонить 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;