OpenGL是一個跨平臺的API,但它對於現有的圖形上下文執行圖形操作是非常具體的,並且不包括創建這樣的上下文或處理窗口事件或任何需要與平臺特定功能。這留給平臺特定的API。
每個平臺的OpenGL實現都將包含用於執行必要任務的平臺特定API。 Windows有WGL,X11有GLX,OS X有低層的CGL或高層的NSOpenGLView。如果沒有在某個級別使用這些特定於平臺的API,則無法使用OpenGL。此外,獲取任何類型的GUI都需要這種平臺特定的代碼。
有些項目已經封裝了各種特定於平臺的API,以便爲創建上下文以及處理OpenGL範圍之外的窗口和其他事件提供便攜式API。從OpenGL開始時最常用的是GLUT。 OS X爲GLUT提供了一個框架,但它尚未更新爲使用OS X的最新OpenGL支持,並且仍然停留在OpenGL 2.x上。隨着OpenGL Core配置文件在2.x和3.x之間的引入,OpenGL API發生了很大的變化。這意味着你目前無法使用GLUT在OS X上編寫一個現代的OpenGL程序。
此外,由於其跨平臺性,GLUT永遠無法提供符合平臺標準的體面GUI。提供一個像樣的圖形用戶界面通常意味着直接使用特定於平臺的API,或者至少在設計具有特定平臺的圖形用戶界面時。
平臺之間的另一個區別是,在OS X,你可以使用任何的OpenGL版本的支持,只需要包含標準的OpenGL頭和通話功能,並像使用任何其他圖書館使用的標識符。在Windows上,OpenGL頭文件沒有提供過去的OpenGL 1.2,這是古老的,並且使用任何比OpenGL更新的工具,這意味着通過OpenGL的擴展機制來訪問它。還有另一個庫,GLEW,目的是在這種情況下可以忍受使用OpenGL。
所以OpenGL是一個跨平臺的API,但你很可能需要爲了有效地使用它使用的平臺特定的代碼一定量圍繞核心的OpenGL代碼。 GLUT可能會是一個很好的跨平臺選項,至少對於學習OpenGL來說,除了在OS X上沒有更新以支持OpenGL 3.x中引入的OpenGL Core配置文件之外。但即使使用GLUT,您也必須通過OpenGL擴展機制或直接通過最新的頭文件處理OpenGL工具訪問方式的差異。
FreeGLGL不能在OSX上工作嗎? – 2012-08-16 16:23:31
@NicolBolas從未嘗試過。我看到他們最近的新聞項目提到了對OS X的改進支持,所以我認爲它在某種程度上有效。 GLFW是另一個在OS X上聲稱支持OpenGL 3.2+的跨平臺庫,所以也許這是一個不錯的選擇。 – bames53 2012-08-16 16:39:08