目錄
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比平原網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式平原網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平原地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 基礎(chǔ)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 特效
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 轉(zhuǎn)場(chǎng)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 函數(shù)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES GPUImage 使用
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES GLSL 編程
**GLEW 擴(kuò)展庫(kù)作用:**不同的顯卡公司,也會(huì)發(fā)布一些只有自家顯卡才支持的擴(kuò)展函數(shù),你要想用這數(shù)涵數(shù),不得不去尋找最新的 glext.h ,有了 GLEW 擴(kuò)展庫(kù),你就再也不用為找不到函數(shù)的接口而煩惱,因?yàn)?GLEW 能自動(dòng)識(shí)別你的平臺(tái)所支持的全部 OpenGL 高級(jí)擴(kuò)展函數(shù)。也就是說,只要包含一個(gè) glew.h 頭文件,你就能使用 gl glu glext wgl glx 的全部函數(shù)。
glad 是繼 gl3w,glew 之后,當(dāng)前最新的用來訪問 OpenGL 規(guī)范接口的第三方庫(kù)。簡(jiǎn)單說 glad 是 glew 的升級(jí)版,就是說 glew 比較老,glad 比較新,Windows 中 使用:
// 定義函數(shù)原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正確的函數(shù)并賦值給函數(shù)指針
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 現(xiàn)在函數(shù)可以被正常調(diào)用了
GLuint buffer;
glGenBuffers(1, &buffer);
OpenGL 只是一個(gè)標(biāo)準(zhǔn)/規(guī)范,具體的實(shí)現(xiàn)是由驅(qū)動(dòng)開發(fā)商針對(duì)特定顯卡實(shí)現(xiàn)的。由于 OpenGL 驅(qū)動(dòng)版本眾多,它大多數(shù)函數(shù)的位置都無法在編譯時(shí)確定下來,需要在運(yùn)行時(shí)查詢。所以任務(wù)就落在了開發(fā)者身上,開發(fā)者需要在運(yùn)行時(shí)獲取函數(shù)地址并將其保存在一個(gè)函數(shù)指針中供以后使用,這就是 glfw 和 glew 的共同之處;
在 OpenGL 項(xiàng)目開發(fā)中,glfw 一般搭配 glad 一起使用;
GLAD 是一個(gè)開源的庫(kù),它能解決我們上面提到的那個(gè)繁瑣的問題。GLAD 的配置與大多數(shù)的開源庫(kù)有些許的不同,GLAD 使用了一個(gè)在線服務(wù)。在這里我們能夠告訴 GLAD 需要定義的 OpenGL 版本,并且根據(jù)這個(gè)版本加載所有相關(guān)的 OpenGL 函數(shù)。
下載地址:https://glad.dav1d.de/
打開 GLAD 的在線服務(wù),將語(yǔ)言(Language)設(shè)置為 C / C++,在 API 選項(xiàng)中,選擇3.3 以上的 OpenGL(gl) 版本(我們的教程中將使用 3.3 版本,但更新的版本也能用)。之后將模式 (Profile) 設(shè)置為 Core,并且保證選中了生成加載器(Generate a loader) 選項(xiàng)?,F(xiàn)在可以先(暫時(shí))忽略擴(kuò)展(Extensions)中的內(nèi)容。都選擇完之后,點(diǎn)擊生成 (Generate) 按鈕來生成庫(kù)文件。
GLAD 現(xiàn)在應(yīng)該提供給你了一個(gè) zip 壓縮文件,包含兩個(gè)頭文件目錄,和一個(gè) glad.c 文件。將兩個(gè)頭文件目錄(glad 和 KHR)復(fù)制到你的 Include 文件夾中(或者增加一個(gè)額外的項(xiàng)目指向這些目錄),并添加 glad.c 文件到你的工程中。
**鏈接庫(kù):opengl32.lib 和 glfw3.lib**
Windows 上的 OpenGL 庫(kù):如果你是 Windows 平臺(tái),opengl32.lib 已經(jīng)包含在 Microsoft SDK 里了,它在 Visual Studio 安裝的時(shí)候就默認(rèn)安裝了。由于這篇教程用的是 VS 編譯器,并且是在 Windows 操作系統(tǒng)上,我們只需將opengl32.lib 添加進(jìn)連接器設(shè)置里就行了。值得注意的是,OpenGL 庫(kù) 64 位版本的文件名仍然是 opengl32.lib(和 32 位版本一樣),雖然很奇怪但確實(shí)如此。
**Linux 上的 OpenGL 庫(kù):**在 Linux 下你需要鏈接 libGL.so 庫(kù)文件,這需要添加
-lGL
到你的鏈接器設(shè)置中。如果找不到這個(gè)庫(kù)你可能需要安裝 Mesa, NVidia 或 AMD 的開發(fā)包,這部分因平臺(tái)而異(而且我也不熟悉 Linux )就不仔細(xì)講解了。
注意當(dāng)前代碼只編譯了 Windows x64 平臺(tái),如果需要 x86 ,自己配置工程屬性編譯即可,源碼下載:OpenGL_glfw_glad
在 OpenGL 項(xiàng)目開發(fā)中,glfw 一般搭配 glad 一起使用;
本文由博客 - 猿說編程 猿說編程 發(fā)布!