簡(jiǎn)單的介紹
OpenGL
OpenGL(Open Graphics Library,開(kāi)放圖形庫(kù)),一般被認(rèn)為是一個(gè)API(Application Programming Interface,應(yīng)用程序編程接口),包含了一系列可以操作圖形、圖像的函數(shù)。其實(shí),OpenGL本身并不是一個(gè)API,它僅僅是一個(gè)由Khronos組織制定并維護(hù)的規(guī)范(Specification)。OpenGL規(guī)范嚴(yán)格規(guī)定了每個(gè)函數(shù)該如何執(zhí)行,以及它們的輸出值。至于內(nèi)部具體每個(gè)函數(shù)是如何實(shí)現(xiàn)(Implement)的,將由OpenGL庫(kù)的開(kāi)發(fā)者自行決定。
GLFW
在我們使用OpenGL進(jìn)行繪制圖形之前,首先要做的就是創(chuàng)建一個(gè)OpenGL上下文(Context)和一個(gè)用于顯示的窗口。然而,這些操作在每個(gè)系統(tǒng)上都是不一樣的,OpenGL有目的地從這些操作抽象(Abstract)出去。這意味著我們不得不自己處理創(chuàng)建窗口,定義OpenGL上下文以及處理用戶輸入。
GLFW是一個(gè)專門針對(duì)OpenGL的C語(yǔ)言庫(kù),它提供了一些渲染物體所需的最低限度的接口。它允許用戶創(chuàng)建OpenGL上下文,定義窗口參數(shù)以及處理用戶輸入。這也就節(jié)省了我們書寫操作系統(tǒng)相關(guān)代碼的時(shí)間,提供給我們一個(gè)窗口和上下文用來(lái)渲染。
官方網(wǎng)址:https://www.glfw.org/
GLAD
因?yàn)镺penGL只是一個(gè)標(biāo)準(zhǔn)/規(guī)范,具體的實(shí)現(xiàn)是由驅(qū)動(dòng)開(kāi)發(fā)商針對(duì)特定顯卡實(shí)現(xiàn)的。由于OpenGL驅(qū)動(dòng)版本眾多,它大多數(shù)函數(shù)的位置都無(wú)法在編譯時(shí)確定下來(lái),需要在運(yùn)行時(shí)查詢。所以任務(wù)就落在了開(kāi)發(fā)者身上,開(kāi)發(fā)者需要在運(yùn)行時(shí)獲取函數(shù)地址并將其保存在一個(gè)函數(shù)指針中供以后使用。取得地址的方法因平臺(tái)而異,所以非常繁瑣。幸運(yùn)的是,有些庫(kù)能簡(jiǎn)化此過(guò)程,其中GLAD是目前最新,也是最流行的庫(kù),它是一個(gè)開(kāi)源庫(kù),可以在其提供的在線服務(wù)中配置。
CMake
CMake是一個(gè)工程文件生成工具。用戶可以使用預(yù)定義好的CMake腳本,根據(jù)自己的選擇生成不同IDE的工程文件。這也就允許我們從GLFW源碼里創(chuàng)建一個(gè)Visual Studio 2017工程文件,之后進(jìn)行編譯。
官方網(wǎng)址:https://cmake.org/
在Windows下使用VS2017的配置過(guò)程
注:為了給大家提供方便,我已經(jīng)將前幾步整合好的Packages包打包,需要的話可以直接下載:
下載鏈接:https://pan.baidu.com/s/1iwJhRHecTnn6GtVYSewrQg 提取碼:s733
如果你已擁有了這個(gè)包,可以直接跳到“創(chuàng)建一個(gè)工程并將Packages的內(nèi)容引入”一節(jié),如果你想親手經(jīng)理一邊整個(gè)配置過(guò)程,就可以繼續(xù)從頭閱讀下去。
下載GLFW庫(kù)
下載頁(yè)面:https://www.glfw.org/download.html
在下載頁(yè)面,我們下載其源碼,然后使用CMake自己進(jìn)行編譯,以獲得Visual Studio 2017可用的工程文件。
下載后解壓得到的文件如下:
下載CMake
下載頁(yè)面:https://cmake.org/download/
這里下載的是3.13.3版本的Windows64位安裝包:
使用CMake和VS2017生成解決方案
下載完成后正常安裝,并且打開(kāi)已經(jīng)安裝成功的CMake。這里我們可以選擇用GUI打開(kāi)或者通過(guò)Command Line使用,為了簡(jiǎn)單直觀,使用GUI來(lái)運(yùn)行CMake。
將源代碼一欄定位到剛剛下載好的GLFW源碼文件夾下,然后選擇一個(gè)生成的目標(biāo)文件夾,之后點(diǎn)擊下方的“Configure”進(jìn)行設(shè)置。
默認(rèn)其選項(xiàng)即可:
然后依次點(diǎn)擊Configure、Generate:
看到最后輸出成功即可。
此時(shí)可以在剛剛設(shè)置的目標(biāo)文件夾下找到已經(jīng)生成的.sln文件,雙擊使用Visual Studio 2017打開(kāi)該解決方案,即可直接進(jìn)行編譯。
編譯成功后,可以在剛剛目錄的build\src\Debug\目錄下找到編譯后的文件:
下載GLAD庫(kù)
GLAD提供了一個(gè)在線服務(wù)地址,用來(lái)配置和生成GLAD庫(kù)。
在線服務(wù)網(wǎng)址:https://glad.dav1d.de/
可以按照如下的內(nèi)容配置,在GL的版本上,只要選擇一個(gè)3.3以上的版本即可,這里選擇的最新版本4.6,Profile處要選擇Core模式。
生成好后直接下載對(duì)應(yīng)的壓縮包即可。
解壓后得到如下文件:
將所需的文件打包
為了方便,這一步我們將所有OpenGL用到的依賴包打包在一個(gè)文件夾下,這樣這一個(gè)文件夾就包含了所有所需的外部依賴。當(dāng)然你也可以跳過(guò)這一步,但是接下來(lái)你的每一個(gè)新工程的引入都還需要在所有地點(diǎn)將各個(gè)包引入。
新建一個(gè)文件夾,這里將其命名為Packages。
分別找到GLFW源碼中include\文件夾下的GLFW文件夾、下載的GLAD庫(kù)放到一個(gè)新建的Packages\include\文件夾下:
將GLFW編譯后的.lib庫(kù)文件放在新建的Packages\lib\文件夾下:
將下載的GLAD庫(kù)中的src文件夾中的文件放入Packages\src\文件夾下(你也可以直接將glad下的src文件夾放置在Packages文件夾下):
最后得到的這個(gè)Packages即是我們整合好的包,這個(gè)包的最終結(jié)構(gòu)大概如下面這個(gè)樣子,接下來(lái)只需要將這個(gè)包進(jìn)行引入即可。
注:為了給大家提供方便,我已經(jīng)將整合好的Packages包打包,需要的話可以直接下載:https://pan.baidu.com/s/1iwJhRHecTnn6GtVYSewrQg 提取碼:s733
創(chuàng)建一個(gè)工程并將Packages的內(nèi)容引入
這里使用Visual Studio 2017,創(chuàng)建一個(gè)C++的空項(xiàng)目。
接下來(lái)配置是為了是我們的GLFW庫(kù)和GLAD庫(kù)在我們新建的項(xiàng)目中起作用。在項(xiàng)目處右鍵,選擇屬性,先切換到“VC++目錄”下:
先引入“包含目錄”:
再引入“庫(kù)目錄”包:
最后轉(zhuǎn)到“鏈接器”的“輸入”選項(xiàng),添加附加依賴項(xiàng):opengl32.lib和glfw3.lib,這個(gè)地方直接輸入即可:
最后在項(xiàng)目的“源文件”中添加Packages包中的src\glad.c:
找到Packages\src\glad.c,將其加入即可:
驗(yàn)證配置是否成功
以上,一切準(zhǔn)備工作都做好了!如果你想檢測(cè)一下配置的結(jié)果是否可用,可以新建一個(gè)main.cpp文件,然后在頭文件處加入:
#include <glad/glad.h>
#include <GLFW/glfw3.h>
如果沒(méi)有報(bào)錯(cuò),很大程度上講應(yīng)該是成功了!
轉(zhuǎn)載請(qǐng)注明出處,本文永久更新鏈接:
https://blogs.littlegenius.xin/2019/01/24/OpenGL學(xué)習(xí)筆記(一)使用VS2017和CMake配置GLFW和GLAD/