OpenGL 基礎第三方包配置
前言
筆者初學OpenGL,由於OpenGL只是一個標準的協議,並且十分偏底層,有許多工作十分繁瑣,要用起來必須輔助以其他的第三方包。在網上的配置教程也不是很新,而且大家用的第三方包也都不盡相同,所以在初始配置的時候吃了不少苦,後來通過各方蒐集資料,終於跑通了第一個測試程式。為了避免之後重灌的時候方便,特寫下配置方法。
需要的材料:
- Cmake:一個很好用的make檔案/VS project生成軟體,具有良好的跨平臺性,在windows和Linux以及Mac上都能用。
- GLEW:OpenGL Extension Wrangler Library,好像是用來針對不同平臺設定OpenGL執行環境的,筆者不太懂,但在例程中會用到它對視窗進行初始化。
- freeglut(GLUT):OpenGL Utility Toolkit,負責處理和底層作業系統的呼叫以及I/O。由於GLUT已經停止維護很久了,也有很多問題,所以發展出開源替代庫freeglut。OpenGL紅寶書裡仍然使用glut,坑了很多人,其實使用freeglut替換glut即可。
- GLFW(GLUT):雖然freeglut完全替代了glut並且也在持續更新,但有時候使用並不很方便,穩定性也有點小小的問題,所以有另一個覆蓋glut庫更小但更穩定好用的庫出現,就是GLFW。
- glm:OpenGL Mathematics是一個為OpenGL寫的數學運算庫,非常好用,將GLSL語言裡好用的向量、矩陣等都在C語言下實現了。而且不依賴其他包,直接下載標頭檔案即可使用。
Windows 下的配置方法
在Windows下安裝庫檔案,由於可能會遇到各種各樣的編譯問題,所以強烈推薦如果有預編譯版本就優先選擇預編譯版本,實在沒有辦法才選擇本地編譯。
安裝Cmake
一路next安裝到位即可
Cmake的使用:
如果想要在本地編譯某些依賴庫,則:
- 將原始碼下載解壓後,開啟Cmake
- 設定原始碼位置為解壓的目錄,該目錄下應有一CmakeList.txt
- 將build輸出位置設為相同的目錄,依次點選confirm,generate
- Cmake將生成VS解決方案,開啟使用Debug/Release 編譯即可
- VS 編譯完成後,在Debug/Release下即可獲取.lib檔案
安裝GLEW
下載glew時,可以直接選擇下載預編譯好的版本,解壓。
- 將
include
目錄下的檔案放入$(VS_INSTALL_DIR)\VC\include
其中VS_INSTALL_DIR
是本地VS的安裝目錄 - 在
lib
目錄下找到glew32.lib
(跟據作業系統選擇win32還是x64版本),放入$(VS_INSTALL_DIR)\VC\lib
- 如果有生成的動態連結庫
.dll
檔案,將其複製到%System32%
目錄下
安裝freeglut
下載freeglut,但是沒有預編譯版本可用,所以使用Cmake生成
同樣對include
目錄下的檔案和編譯出的.lib,.dll
檔案放到相應的位置
安裝GLFW
下載GLFW,有預編譯版本。
將include
目錄下的檔案和glfw3.lib
檔案放到相應的位置
安裝glm
glm不需要編譯,下載解壓後將目錄下 glm
檔案放入VS預設include目錄
專案檔案配置
在配置專案檔案時,需要注意兩點:
- 在 #include <GL\glfw3.h>
之前 #include <GL\glew.h>
,因為glfw需要使用glew預定義的變數
- 在附加依賴庫中加入glew32.lib, glfw3.lib
,否則會出現未定義的引用
錯誤
Linux 下的配置方法(ubuntu)
安裝內容 | 命令 |
---|---|
建立基本編譯環境 | sudo apt-get install build-essential |
OpenGL Library | sudo apt-get install libgl1-mesa-dev |
GL Utility | sudo apt-get install libglu1-mesa-dev |
glut | sudo apt-get install freeglut3-dev |
glew | sudo apt-get install libglew-dev glew-utils |
glfw | sudo apt-get build-dep glfw |
sudo apt-get install libxrandr-dev | |
X Window System | sudo apt-get install xorg-dev |
編譯引數 | -lGL -lGLU -lglut -lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi |
雖然在配置環境方面Linux要方便得多,但是因為Nvidia對Linux的驅動支援太差了,會出現各種問題,所以後來我還是拋棄了liunx環境,轉而在VS環境下進行開發。