編輯:解決。這是一個GLFW問題,與Mountain Lion或OpenGL無關。爲什麼我在安裝Mountain Lion時會降級OpenGl?
我以前在我的2009 Macbook Pro上使用過Lion。在Xcode中,下面的工作沒有問題:
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
再印OpenGL version received: 3.2
。升級到Mountain Lion之後,上述代碼將無法工作(掛起ALLEGE,因爲glfwOpenWindow返回false)。剔除所有GLFW窗口提示例如爲:
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
允許OS選擇要使用的OpenGL的版本。上面的代碼編譯並運行,但打印OpenGL version received: 2.1
到控制檯。
我說「wft?」並查看系統信息應用程序以獲取更多信息。框架部分告訴我,我擁有的OpenGl框架是1.8.6。
現在,如果我的OpenGL框架確實被降級,我會感到困惑,而且很沮喪。我知道沒有辦法手動升級我的框架。 任何人都可以幫助我理解發生了什麼?
EDIT1:使用OpenGL擴展Viewer.app告訴我,我的OpenGL版本是2.1 NVIDIA-8.0.61
EDIT2:的問題似乎與沒有使用正確的配置文件(兼容性,而不是我的核心項目),但是當我使用glfw的提示來指定核心例如
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
後續調用glfwOpenWindow()
失敗。我不知道如何診斷這個問題,因爲直到窗口成功打開後,glGetError纔會起作用。
山獅沒有降級OpenGL。這很可能是glfw在版本的錯誤位置尋找的問題。 –
另請參閱此[相關問題](http://stackoverflow.com/questions/10869647/using-opengl-3-2-with-derelict3-and-glfw-3-on-osx-lion?rq=1)for如何使用glfw查看OpenGL 3.2功能。 –
謝謝@KurtRevis,但相關問題的問題是沒有指定要使用哪個OpenGL配置文件。我在上面使用的'glfwOpenWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE)'這一行包含了核心配置文件[http://www.glfw.org/GLFWReference27.pdf]。這種方法在Lion上成功,但現在失敗了。由於訪問不好,我無法使用glGetError()來診斷問題(我假設OpenWindow失敗時未創建上下文)。 – cjcurrie