vs 2013配置OpenGL唤锉,GLFW庫,GLEW庫

OpenGL的接口實現(xiàn)是顯卡商實現(xiàn)的(相關(guān)庫函數(shù)由gl開頭)别瞭,OpenGL只是一套標準窿祥,只要電腦有顯卡驅(qū)動,就有OpenGL的函數(shù)庫蝙寨,如果還沒驅(qū)動晒衩,可以從這下載對應(yīng)你電腦的顯卡驅(qū)動。
GLFW是現(xiàn)在較流行墙歪、使用廣泛的OpenGL的界面庫听系,而glut庫已經(jīng)比較老了。GLEW是和管理OpenGL函數(shù)指針有關(guān)的庫虹菲,因為OpenGL只是一個標準/規(guī)范跛锌,具體的實現(xiàn)是由驅(qū)動開發(fā)商針對特定顯卡實現(xiàn)的。由于OpenGL驅(qū)動版本眾多,它大多數(shù)函數(shù)的位置都無法在編譯時確定下來髓帽,需要在運行時查詢菠赚,而GLEW可以解決這些問題。

一.下載 GLFW郑藏,GLEW

到這GLFW官網(wǎng)下載GLFW32位版本衡查,大家普遍下載32位版本,64位可能還不太完善必盖,容易出問題拌牲,為了不必要的麻煩推薦下載32位版本。下載后歌粥,解壓到自己指定的位置塌忽;
到這GLEW官網(wǎng)下載GLEW32位版本,然后解壓

二. 配置GLFW

如果要使用GLFW庫失驶,就要將它和Visual Studio(準確來說是VS下的VC++)鏈接起來土居,有兩種方法。

1.第一種方法嬉探,在工程的屬性管理器包含GLFW的相關(guān)庫

新建一個Visual C++的空項目擦耀,在右下邊選中屬性管理器,鼠標右擊工程名字project1涩堤,選擇屬性眷蜓。也可以鼠標右擊工程名字,在菜單列表最下面可以看到屬性胎围。

image.png

(1)在屬性面板里選中VC++目錄-->包含目錄吁系,右邊下拉開始編輯
image.png

找到解壓后的glfw-3.2.1.bin.WIN32文件下/include/的位置,將路徑加進去白魂,我的是D:\Another\glfw-3.2.1.bin.WIN32\include,然后點擊確定和應(yīng)用
image.png

(2)在屬性面板里選中VC++目錄-->庫目錄垮抗,右邊下拉進行編輯,將文件里的lib-vc2013路徑加進去碧聪,我的是D:\Another\glfw-3.2.1.bin.WIN32\lib-vc2013冒版,點擊確定和應(yīng)用
image.png

(3)屬性面板找到鏈接器-->輸入,選中附加依賴項逞姿,在里面添加glfw3.lib辞嗡,glfw3dll.lib,opengl32.lib滞造,只是添加文件的名字续室,注意這些名字不要錯了,不要用逗號分隔谒养,要用換行挺狰。然后點擊確定和應(yīng)用
image.png

image.png

(4)在D:\Another\glfw-3.2.1.bin.WIN32\lib-vc2013下復(fù)制glfw3.dll文件,如果電腦是64位系統(tǒng)就將它放到C:\Windows\SysWOW64目錄下,如果是32位系統(tǒng)丰泊,就放到C:\Windows\System32下薯定,如果不清楚自己電腦32位還是64,就兩個地方都放一份glfw3.dll

2.第二種方法瞳购,在Visual Studio安裝目錄下的VC文件夾下话侄,添加GLFW相關(guān)庫

打開剛才下載、解壓后的 glfw-3.2.1.bin.WIN32 文件学赛,我的是這樣:

image.png

(1)將include中的GLFW文件夾拷貝到VS安裝目錄下的VC/include中
(2)我的是使用VS2013年堆,就將lib-vc2013中的lib文件拷貝到VS2013安裝目錄下的VC/lib中,如果是VS2015就選擇lib-vc2015中的lib文件拷貝到VS2015安裝目錄下的VC/lib中
(3)在D:\Another\glfw-3.2.1.bin.WIN32\lib-vc2013下復(fù)制glfw3.dll文件盏浇,如果電腦是64位系統(tǒng)就將它放到C:\Windows\SysWOW64目錄下变丧,如果是32位系統(tǒng),就放到C:\Windows\System32下绢掰,如果不清楚自己電腦32位還是64痒蓬,就兩個地方都放一份glfw3.dll
(4)和第一種方法的第三步一樣,在屬性面板屬性面板找到鏈接器-->輸入曼月,選中附加依賴項谊却,在里面添加glfw3.lib柔昼,glfw3dll.lib哑芹,opengl32.lib,然后點擊確定和應(yīng)用

三.配置GLEW庫

配置GLEW庫和配置GLFW差不多一樣捕透,也有兩種方法聪姿,只不過鏈接的庫名字不一樣罷了,可以在屬性管理器里包含相關(guān)lib和include文件的路徑乙嘀,也可以將lib和include里的文件分別拷貝到vs安裝目錄下VC里lib和include文件夾下面末购。還有就是,因為有靜態(tài)鏈接動態(tài)鏈接的選擇虎谢,所以配置GLEW又有兩種不同方式盟榴。注意:配置靜態(tài)鏈接動態(tài)鏈接不一樣,在代碼里包含頭文件也不一樣婴噩。先找到之前下載擎场、解壓好的glew-1.13.0文件,我的是這樣:

image.png

這里我使用第二種方法:
(1)將include中的GL文件夾拷貝到VS安裝目錄下的VC/include中几莽,如果已經(jīng)存在GL文件夾迅办,就合并
(2)將glew-1.13.0\lib\Release\Win32中的lib文件拷貝到VS2013安裝目錄下的VC/lib中
(3)在glew-1.13.0\bin\Release\Win32下復(fù)制glew32.dll文件,如果電腦是64位系統(tǒng)就將它放到C:\Windows\SysWOW64目錄下章蚣,如果是32位系統(tǒng)站欺,就放到C:\Windows\System32下
(4)因為有靜態(tài)鏈接和動態(tài)鏈接的選擇,所以有兩種不同方式,請看下面

1.靜態(tài)鏈接配置的關(guān)鍵點:

在屬性面板里矾策,找到鏈接器-->輸入磷账,選中附加依賴項,編輯蝴韭,在里面添加glew-1.13.0文件里的glew32s.lib(注意有s够颠,static是靜態(tài)的意思),然后點擊確定榄鉴、應(yīng)用履磨,注意:如果glew32s.lib(有s)和glew32.lib都在里面,那么glew32s.lib(有s)在glew32.lib前面庆尘,最好是剃诅,靜態(tài)鏈接就只添加glew32s.lib,動態(tài)的就只加glew32.lib

image.png

在代碼里,在最前面應(yīng)該是這樣驶忌,注意:#define GLEW_STATIC應(yīng)該在#include <GL/glew.h>前面矛辕,#include <GL/glew.h>在#include<GLFW/glfw3.h>前面

image.png

2.動態(tài)鏈接配置的關(guān)鍵點:

在屬性面板里,找到鏈接器-->輸入付魔,選中附加依賴項聊品,編輯,在里面添加glew-1.13.0文件里的glew32.lib(自己找)几苍,然后點擊確定翻屈、應(yīng)用

image.png

然后在glew-1.13.0文件里找到glew32.dll,把它放到你的工程里
image.png

在代碼里,只需要#include <GL/glew.h>就可以
image.png

4.這里我選擇靜態(tài)鏈接來測試妻坝,此時工程文件里不應(yīng)該出現(xiàn)glew32.dll

#define GLEW_STATIC
#include <GL/glew.h>
#include<GLFW/glfw3.h>
#include<iostream>
/* 注意:#define GLEW_STATIC 在 #include<GL/glew.h>前面伸眶,
  * #include<GL/glew.h>在#include<GLFW/glfw3.h>前面
 */
using namespace std;

/*創(chuàng)建鍵盤輸入的回調(diào)函數(shù)*/
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
    // 當用戶按下ESC鍵,我們設(shè)置window窗口的WindowShouldClose屬性為true
    // 關(guān)閉應(yīng)用程序
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}

int main()
{
    /*初始化GLFW*/
    glfwInit();
    /*配置GLFW窗口*/
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 4);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    /*創(chuàng)建窗口*/
    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
    if (window == nullptr)
    {
        cout << "Failed to create GLFW window" << endl;
        glfwTerminate();
        return -1;
    }
/*通知GLFW將我們窗口的上下文設(shè)置為當前線程的主上下文*/
    glfwMakeContextCurrent(window);

/*GLEW是用來管理OpenGL的函數(shù)指針的,所以在調(diào)用任何OpenGL的函數(shù)之前我們需要初始化GLEW*/
    glewExperimental = GL_TRUE;
    if (glewInit() != GLEW_OK)
    {
        cout << "Failed to initialize GLEW" << endl;
        return -1;
    }
/*告訴OpenGL渲染窗口的尺寸大小刽宪,這樣OpenGL才只能知道怎樣相對于窗口大小顯示數(shù)據(jù)和坐標*/
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    glViewport(0, 0, width, height);
/*注冊回調(diào)函數(shù)*/
    glfwSetKeyCallback(window, key_callback);
/*事件循環(huán)*/
    while (!glfwWindowShouldClose(window))
    {
        glfwPollEvents();
    /*函數(shù)檢查有沒有觸發(fā)什么事件(比如鍵盤輸入厘贼、鼠標移動等),
     *然后調(diào)用對應(yīng)的回調(diào)函數(shù)(可以通過回調(diào)方法手動設(shè)置)圣拄。
     我們一般在游戲循環(huán)的開始調(diào)用事件處理函數(shù)
     */

    // 這里寫渲染指令


        glfwSwapBuffers(window);
    /*函數(shù)會交換顏色緩沖(它是一個儲存著GLFW窗口每一個像素顏色的大緩沖)嘴秸,
     *它在這一迭代中被用來繪制,并且將會作為輸出顯示在屏幕上
     */
}
/*釋放GLFW分配的內(nèi)存*/
    glfwTerminate();

    return 0;
}

運行成功則配置完成庇谆,哈哈

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岳掐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子族铆,更是在濱河造成了極大的恐慌岩四,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哥攘,死亡現(xiàn)場離奇詭異剖煌,居然都是意外死亡材鹦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門耕姊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桶唐,“玉大人,你說我怎么就攤上這事茉兰∮仍螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵规脸,是天一觀的道長坯约。 經(jīng)常有香客問我,道長莫鸭,這世上最難降的妖魔是什么闹丐? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮被因,結(jié)果婚禮上卿拴,老公的妹妹穿的比我還像新娘。我一直安慰自己梨与,他們只是感情好堕花,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粥鞋,像睡著了一般缘挽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陷虎,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天到踏,我揣著相機與錄音杠袱,去河邊找鬼尚猿。 笑死,一個胖子當著我的面吹牛楣富,可吹牛的內(nèi)容都是我干的凿掂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纹蝴,長吁一口氣:“原來是場噩夢啊……” “哼庄萎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起塘安,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤糠涛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兼犯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍捡,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡集漾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了砸脊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片具篇。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凌埂,靈堂內(nèi)的尸體忽然破棺而出驱显,到底是詐尸還是另有隱情,我是刑警寧澤瞳抓,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布埃疫,位于F島的核電站,受9級特大地震影響孩哑,放射性物質(zhì)發(fā)生泄漏熔恢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一臭笆、第九天 我趴在偏房一處隱蔽的房頂上張望叙淌。 院中可真熱鬧,春花似錦愁铺、人聲如沸鹰霍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茂洒。三九已至,卻和暖如春瓶竭,著一層夾襖步出監(jiān)牢的瞬間督勺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工斤贰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留智哀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓荧恍,卻偏偏與公主長得像瓷叫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子送巡,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容