1. 程式人生 > >OpenGL 基礎第三方包配置

OpenGL 基礎第三方包配置

前言

筆者初學OpenGL,由於OpenGL只是一個標準的協議,並且十分偏底層,有許多工作十分繁瑣,要用起來必須輔助以其他的第三方包。在網上的配置教程也不是很新,而且大家用的第三方包也都不盡相同,所以在初始配置的時候吃了不少苦,後來通過各方蒐集資料,終於跑通了第一個測試程式。為了避免之後重灌的時候方便,特寫下配置方法。

需要的材料:

  1. Cmake:一個很好用的make檔案/VS project生成軟體,具有良好的跨平臺性,在windows和Linux以及Mac上都能用。
  2. GLEW:OpenGL Extension Wrangler Library,好像是用來針對不同平臺設定OpenGL執行環境的,筆者不太懂,但在例程中會用到它對視窗進行初始化。
  3. freeglut(GLUT):OpenGL Utility Toolkit,負責處理和底層作業系統的呼叫以及I/O。由於GLUT已經停止維護很久了,也有很多問題,所以發展出開源替代庫freeglut。OpenGL紅寶書裡仍然使用glut,坑了很多人,其實使用freeglut替換glut即可。
  4. GLFW(GLUT):雖然freeglut完全替代了glut並且也在持續更新,但有時候使用並不很方便,穩定性也有點小小的問題,所以有另一個覆蓋glut庫更小但更穩定好用的庫出現,就是GLFW。
  5. 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環境下進行開發。

Mac 下的配置方法

一些參考部落格