這個章節主要是介紹如何準備好一個可以撰寫 OpenGL 程式的環境,因為 OpenGL 只是一套繪圖的 API,所以需要其他的 API 輔助跟 OS 溝通,至少要能取得一塊畫面,讓 OpenGL API 能夠在畫面上繪圖。而一般 OpenGL 教學上常用的輔助 API 就是 GLUT。因為 GLUT 提供了一些基本的功能如鍵盤滑鼠的支援,並且在 Windows、Linux 環境都能使用。不過若需要支援較多的滑鼠搖桿功能,或是音樂或影片的播放,網路的連線,在更多平台上使用等其他功能,就必須使用另外的 API 來取代 GLUT,而這些 API 有蠻多種選擇,每一種都有其不同的功能跟特色。
以下就先用OS 原生與否來分類這些 API :
OS 原生 API | 作業系統原生支援的API,故只有單一平台 |
WGL |
WGL支援 Windows 下繪圖視窗的存取,其他功能需要使用 Win32 API。 |
GLX |
GLX支援 XWindows 下繪圖視窗的存取,其他功能需要使用 Linux API。 |
AGL |
AGL支援 MacOS 下繪圖視窗的存取,其他功能需要使用 MAC API。 |
跨平台API | 跨平台API通常是將 OS 原生 API 打包,提供統一通用的介面 |
glut |
|
FreeGLUT |
|
SDL |
|
QT |
|
SFML |
|
GLFW |
|
Fast Light Toolkit (FLTK) |
|
在選定要使用的API之後,設定開發環境時要作的事情主要就是設定的 Library 的 LIB 路徑,Header 路徑等,就可以開始寫程式。
而之後的程式範例,大致上會以SDL 1.2 或是 glut 為主。
Windows使用者特別篇:
由於微軟只有在初期參與 OpenGL 的制定,後來推出了自己的3D API: Direct3D, 所以在 Windows 預設環境下只能使用到 OpenGL 1.1的API。 但是 OpenGL API 本身有提供擴充 Function 的介面。 所以只要3D顯示卡的驅動程式支援新版的 OpenGL, 便可以透過 OpenGL 擴充的介面, 將最新版的 OpenGL Function 呼叫出來。 而這個動作也已經有 Library 幫我們做好了, 常見的便是 GLEW 與 GLEE 這兩套 Library, 只要使用其中一套,就可以在 Windows 下使用比 OpenGL 1.1 新的功能。 另外前述的跨平台 API 也有部分作了類似 GLEW 的功能, 但是如果沒有支援到最新版的 OpenGL (例如 SDL1.3 尚未支援至 OpenGL 3.2 ), 仍然可以結合使用 GLEW 或是 GLEE 把驅動程式所支援的最新版 OpenGL API 叫出來使用。