1. 程式人生 > 實用技巧 >OpenGL學習_一週目開荒

OpenGL學習_一週目開荒

入門篇 第二節 建立視窗

GLFW

GLFW(下載連結)是一個專門針對OpenGL的C語言庫,它提供了一些渲染物體所需的最低限度的介面。它允許使用者建立OpenGL渲染狀態,定義視窗引數以及處理使用者輸入。

構建GLFW

在下載連線中會發現有多種版本,但是為了完整性和不出相容性差錯,最好選擇下載Source Package版本(如下圖所示)

但是下載原始碼會因為使用者所使用不同IDE而造成提供的工程檔案不相容的問題,如果從頭開始構造工程可就太麻煩了,因此使用CMAKE工具來快速生成所想要的工程檔案

CMAKE

CMAKE是一個工程檔案生成工具,可以生成你自己所設定的目標IDE的工程檔案(下載連結

)大大節省了使用者的時間

開始構建我們的工程吧

  • 開啟安裝好的CMAKE,在第一欄填入你的GLFW目錄,第三欄填入生成的工程的存放路徑,如下圖所示

  • 設定好之後點選左下處的Configure按鈕,會讓我們選擇IDE,選擇你所應用的版本,一定要對應不要選錯,其他選項預設即可,點選finish,之後再點選Configure,儲存設定之後點選Generate開始生成
  • 在生成的時候會有一些常見問題,有可能會報CMakeListscmake_uninstall.cmake缺失什麼的,這時候建議重新下載一次GLFW原始檔;同時如果報cmake could not find any instance of Visual Studio.
    這個錯,請檢查你的VS有沒有下載C++開發等外掛,具體操作及C++環境配置見(找不到VS的解決辦法
  • 生成完畢會看見CMAKE控制檯顯示Configure done提示,這就代表工程成功構建在了你設定的存放路徑。

編譯

工程構建好了之後,我們就要編譯出我們以後需要用到的庫了,使用VS開啟新構建工程裡面的GLFW.sln檔案,然後生成-->生成解決方案,如此一來,你就可以在“你構建的工程目錄/src/Debug”裡面找到新編譯出的庫glfw3.lib啦。

這裡建議讀者自己建立一個資料夾(第三方庫資料夾),專門用來存放第三方的庫(library)檔案和包含(include)檔案,如此搭配Git即在任何計算機上都可以操作同一個目錄下的檔案了,方便管理。如下圖所示

如此一來,我們將glfw3.lib放入第三方庫資料夾的Library資料夾中,將我們下載好的GLFW的include檔案中的兩個檔案glfw3.hglfw3native.h放入我們第三方庫資料夾的Include資料夾中。

建立第一個OpenGL工程

  • 首先建立一個新的VS專案,選擇Visual C++,搞個酷炫的名字
  • 連結 現在我們的VS還不知道我們的第三方庫和標頭檔案在哪,需要連線上。在解決方案資源管理器中右鍵點選我們的工程名,點選屬性,點選VC++目錄,然後將我們剛剛建立好的第三方庫資料夾填入對應欄中,如下圖所示

  • 接下來需要在"連結器-輸入-附加依賴項"中設定我們剛剛編譯好的庫,並且同時引入opengl32.lib即可;如果你是window系統的話,在microsoft SDK裡就已經有這個庫了,所以直接寫就行,如果是在linux系統,請參照原文進行opengl32.lib的引入操作(linux下的opengl32.lib引入
  • 如果上述操作一切順利的話,可以在工程中鍵入以下程式碼並且無報錯
    #include <GLFW\glfw3.h>

GLAD

正式開始前還有一件事需要做,由於OpenGL不同驅動版本下函式的位置都是不同的,需要在執行時查詢。因此就需要開發者在執行時獲取函式地址並存在一個指標中以供後續使用。但是如果每一個函式都要進行這樣的操作,那不麻煩的一B?因此我們引入GLAD來大大簡化這個過程,只需告訴GLAD你的 OpenGL版本,就可以載入所有相關的OpenGL函式。

開啟GLAD的線上服務,將語言(Language)設定為C/C++,在API選項中,選擇3.3以上的OpenGL(gl)版本(我們的教程中將使用3.3版本,但更新的版本也能正常工作)。之後將模式(Profile)設定為Core,並且保證生成載入器(Generate a loader)的選項是選中的。現在可以先(暫時)忽略拓展(Extensions)中的內容。都選擇完之後,點選生成(Generate)按鈕來生成庫檔案。

GLAD現在應該提供給你了一個zip壓縮檔案,包含兩個標頭檔案目錄,和一個glad.c檔案。將兩個標頭檔案目錄(glad和KHR)複製到你的Include資料夾中(或者增加一個額外的專案指向這些目錄),並新增glad.c檔案到你的工程中。

如果上述操作一切順利的話,可以在工程中鍵入以下程式碼並且無報錯
#include <glad\glad.h>