2013-01-20 28 views
1

編輯:解決。這是一個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纔會起作用。

+0

山獅沒有降級OpenGL。這很可能是glfw在版本的錯誤位置尋找的問題。 –

+1

另請參閱此[相關問題](http://stackoverflow.com/questions/10869647/using-opengl-3-2-with-derelict3-and-glfw-3-on-osx-lion?rq=1)for如何使用glfw查看OpenGL 3.2功能。 –

+0

謝謝@KurtRevis,但相關問題的問題是沒有指定要使用哪個OpenGL配置文件。我在上面使用的'glfwOpenWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE)'這一行包含了核心配置文件[http://www.glfw.org/GLFWReference27.pdf]。這種方法在Lion上成功,但現在失敗了。由於訪問不好,我無法使用glGetError()來診斷問題(我假設OpenWindow失敗時未創建上下文)。 – cjcurrie

回答

2

從源代碼重新編譯GLFW並使用它與靜態鏈接只解決了我的問題。一些內部錯誤導致glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);無法正常工作。

相關問題