最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

通過GLEW訪問OpenGL函數(shù)

2023-08-16 16:52 作者:西村啪啪二  | 我要投稿

為了使用新版本的OpenGL,我們可以進(jìn)入到顯卡的驅(qū)動(dòng)dll文件里,檢索庫里面的函數(shù)的指針來調(diào)用他們,但首先這不是跨平臺(tái)的,所以到驅(qū)動(dòng)里拉取函數(shù),需要用到一些windows專用的API調(diào)用或者外來的windows加載庫,而且這些新版本OpenGL經(jīng)過迭代可能有1000多個(gè)函數(shù)需要我們手動(dòng)檢索并實(shí)現(xiàn),這相當(dāng)困難。所以我們直接用GLEW庫(也有其他庫,但GLEW是最簡單的),它只提供OpenGL的規(guī)范,包括函數(shù)的聲明,符號(hào)的聲明,常量等等,不提供任何實(shí)際代碼,只會(huì)訪問一些電腦中的二進(jìn)制形式的函數(shù)。

到GLEW官網(wǎng),出于學(xué)習(xí)OpenGL的目的,我們只需要下載二進(jìn)制文件。在VS項(xiàng)目屬性中分別添加附加包含目錄,附加庫目錄,附加依賴項(xiàng),根據(jù)經(jīng)驗(yàn)一般lib文件如果有帶s的,就是靜態(tài)庫。在doc文件夾中包含了相關(guān)的文檔,打開index.html可以在本地瀏覽跟官網(wǎng)相同的網(wǎng)頁。首先我們需要看文檔來搞清楚怎么用正確的方法來調(diào)用一個(gè)庫,而不是隨便做出一些假設(shè),因?yàn)檫@會(huì)導(dǎo)致一些奇怪的BUG(哪怕它暫時(shí)能運(yùn)行)。

在glew.h中找到glewInit();進(jìn)入GLEWAPI宏中,可以看到注釋,

GLEW_STATIC是用來定義靜態(tài)庫的,GLEW_BUILD用來定義構(gòu)建DLL庫的,現(xiàn)在我們沒有GLEW_STATIC和GLEW_BUILD的定義,所以這里定義GLEWAPI為extern __declspec(dllimport),這是一個(gè)內(nèi)在的MSVC編譯器,它會(huì)告訴鏈接器這是來自一個(gè)dll文件,需要dll引用,但現(xiàn)在我們用的是靜態(tài)庫,沒有用dll版本的glew,所以這樣寫代碼就會(huì)出錯(cuò)。解決這事的方法就是定義GLEW_STATIC,項(xiàng)目屬性->C/C++->預(yù)處理器->預(yù)處理器定義,添加GLEW_STATIC;

我們?cè)趃lfwMakeContextCurrent(window)之前調(diào)用glewInit(),它的返回值不等于GLEW_OK,因?yàn)楣俜轿臋n告訴我們需要在創(chuàng)建一個(gè)有效的OpenGL渲染上下文之后調(diào)用glewInit(),所以我們應(yīng)該在glfwMakeContextCurrent(window)之后調(diào)用glewInit(),如下:

這樣一來我們就能訪問所有的OpenGL函數(shù)了,在glew.h文件中可以找到它們。

通過GLEW訪問OpenGL函數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
渭源县| 普格县| 罗江县| 故城县| 宜城市| 巴林右旗| 奈曼旗| 乳山市| 广南县| 江陵县| 双鸭山市| 武鸣县| 宁波市| 都安| 台湾省| 光山县| 买车| 东莞市| 阿克| 年辖:市辖区| 东方市| 公主岭市| 惠水县| 沁水县| 凤台县| 娄底市| 库尔勒市| 玉山县| 调兵山市| 延边| 孟村| 南部县| 和顺县| 崇礼县| 高雄市| 林周县| 治县。| 高尔夫| 定结县| 星座| 葫芦岛市|