踏入OpenGL大門 —— VS2015開發(fā)環(huán)境配置 (詳細(xì)圖文)

眼睛熊

---------------- 本文 ---------------

注意:筆者是以 Win10 + VS2015 為例

內(nèi)容:安裝CMake挫剑、配置freeglut 愉棱、配置glew

版本:Window10哲戚、VS2015、CMake 3.8.0-rc-1朋其、freeglut 3.0.0、glew 2.0.0

目標(biāo):使初學(xué)者不再為配置OpenGL相關(guān)環(huán)境苦惱

預(yù)熱

需要說明的是:OpenGL不需要安裝——它的實現(xiàn)早就在您的顯卡中存在了。

想要開發(fā)OpenGL程序喇潘,需要的只是它的一系列接口硕勿,而在真正開發(fā)時,也不需要在網(wǎng)上找OpenGL的頭文件,編譯器已經(jīng)把關(guān)于OpenGL的頭文件放置在某一個位置中了脏毯。

查看OpenGL頭文件的方式是用VS隨便創(chuàng)建一工程(實例使用了預(yù)編譯頭),然后引入頭文件:

#include <gl\GL.h>

然后右鍵打開文檔、再在相應(yīng)的選項卡上右鍵打開文件所在的文件夾,如下所示:


打開文檔
右鍵打開文件所在的文件夾
查看OpenGL頭文件

可以看到實例圖片中,包含這兩個OpenGL的頭文件:

GL.h:OpenGL所使用的函數(shù)和常量聲明旱眯。
GLU.h(OpenGL實用庫)所使用的函數(shù)和常量聲明愧怜。

不同的系統(tǒng)丸氛,這些文件的路徑和名字(大小寫)很可能是不同的,所以不用糾結(jié)這個問題禾锤,因為你若是直接引入這個頭文件私股,編譯則報錯。


直接引入OpenGL頭文件恩掷,編譯報錯

此時先引入windows頭文件即可:

// stdafx.h : 標(biāo)準(zhǔn)系統(tǒng)包含文件的包含文件倡鲸,
// 或是經(jīng)常使用但不常更改的
// 特定于項目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO:  在此處引用程序需要的其他頭文件
#include <Windows.h>
#include <gl\GL.h>
#include <gl\GLU.h>

然而,即使如此也并不能立即用代碼創(chuàng)建一個窗口來瞧一瞧黄娘,因為:

OpenGL自身并不包含任何窗口任務(wù)或者處理用戶輸入的函數(shù)峭状。
OpenGL沒有提供任何用于表達(dá)三維物體模型、或者讀取圖像文件(例如JPEG文件)的操作逼争。

所以熱身完畢优床。

準(zhǔn)備

OpenGL既然沒有包含那些東西,那么我們自然需要用第三方軟件庫來完成這些功能氮凝,例如創(chuàng)建窗口羔巢、接受鼠標(biāo)和鍵盤事件等。備選的第三方軟件庫還必須和OpenGL一樣支持跨平臺移植罩阵,于是出現(xiàn)兩個大家都在用的第三方軟件庫:freeGLUT 和 GLEW竿秆。

FreeGLUT 是GLUT的一個完全開源替代庫。
GLEW是一個簡單的OpenGL擴(kuò)展工具庫

本文與其說是OpenGL的開發(fā)環(huán)境配置教程稿壁,不如說是OpenGL相關(guān)的第三方軟件庫的開發(fā)環(huán)境配置教程幽钢。

下載

GLEW只需要去官網(wǎng)下載最新版本就可以了,里面包含了相關(guān)的頭文件和編譯好的lib傅是、dll文件匪燕。

而FreeGLUT在官網(wǎng)中下載到的文件需要在本地進(jìn)一步編譯,才能被我們使用喧笔,所以本文使用CMake來幫助我們編譯FreeGLUT帽驯。

各種官網(wǎng)地址
OpenGL: https://www.opengl.org/
FreeGLUT: http://freeglut.sourceforge.net/
GLEW: http://glew.sourceforge.net/
CMake: https://cmake.org/

筆者提前準(zhǔn)備了相應(yīng)文件,不想麻煩的童鞋可以在這里下載它們

下載CMake:
打開CMake官網(wǎng)书闸,點(diǎn)擊Download

下拉頁面

根據(jù)系統(tǒng)的不同尼变,選擇對應(yīng)的安裝文件,點(diǎn)擊即可下載(筆者選擇了第一個紅框選中的文件)。

下載完畢
下載FreeGLUT:
打開FreeGLUT官網(wǎng)浆劲,點(diǎn)擊Download
選中最新穩(wěn)定版嫌术,點(diǎn)擊即可下載
下載GLEW:
打開GLEW官網(wǎng)哀澈,點(diǎn)擊二進(jìn)制文件即可下載
下載完成
最終文件

最終文件
安裝CMake

沒什么特別的,一路next下來即可度气。


點(diǎn)擊next
勾選 I accept... ,點(diǎn)擊next

點(diǎn)擊next

點(diǎn)擊next

點(diǎn)擊Install割按,如果彈出權(quán)限詢問,選擇是即可磷籍。
點(diǎn)擊Finish适荣,安裝完成
編譯FreeGLUT文件

解壓freeglut-3.0.0.tar,并創(chuàng)建CMake編譯文件輸出文件夾:


解壓freeglut-3.0.0.tar择示,并創(chuàng)建CMake編譯文件輸出文件夾

打開CMake(cmake-gui), 如下圖二者之一:

打開CMake(cmake-gui)
打開CMake(cmake-gui)

在 where is the source code 中選擇解壓freeglut的目錄束凑,注意這個目錄內(nèi)包含了CMakeLists.txt

在where to build the binaries 中選擇之前創(chuàng)建的CMake編譯文件輸出文件夾:


點(diǎn)擊箭頭指向的按鈕選擇對應(yīng)的文件夾

freeglut解壓的文件夾栅盲,注意該文件夾內(nèi)包含了CMakeLists.txt

點(diǎn)擊Configure:
點(diǎn)擊Configure

彈出的窗口中選擇對應(yīng)的VS版本汪诉,筆者選擇的是VS2015,點(diǎn)擊Finish

等待完成谈秫,會出現(xiàn) Configuring done 字樣

注意扒寄,如果出現(xiàn)錯誤提示,則先點(diǎn)擊File->Delete Cache之后拟烫,再點(diǎn)擊Configure该编,然后選擇不同的VS版本重試(前提是你的電腦確實安裝了該版本的VS):
如果出現(xiàn)錯誤提示

點(diǎn)擊Delete Cache之后,再點(diǎn)擊Configure硕淑,然后選擇不同的VS版本重試

Configur完成之后(注意勾選下圖列出的項课竣,特別是FREEGLUT_BUILD_SHARED_LIBS 和FREEGLUT_BULID_STATIC_LIBS),點(diǎn)擊Generate生成VS工程文件:
點(diǎn)擊Generate

Generate成功

打開CMake輸出文件目錄置媳,找到freeglut.sln文件于樟,雙擊打開:


打開CMake輸出文件目錄

雙擊打開freeglut.sln

等待VS2015加載完成

注意測試工程環(huán)境:Dubug & Win32

點(diǎn)擊生成->生成解決方法:


編譯工程

等待編譯完成

注意此時編譯出來的是debug、win32版本的freeglut3.0.0文件——需要release版本拇囊,需要在Release下迂曲,再次編譯一下即可(不過,原來的32位文件就被覆蓋掉了):
注意此時工程環(huán)境:Release & Win32

編譯完成后寥袭,再次打開工程所在文件夾(即CMake輸出文件夾)路捧;此時已經(jīng)編譯好了的freeglut文件就存放在lib、bin文件夾里面:
此時編譯好了的freeglut文件就存放在lib传黄、bin文件夾里面

如果需要64位lib文件和dll文件杰扫,只需重新使用CMake 編譯生成,只不過選擇編譯器時選擇Win64而已:

CMake生成Win64 VS工程文件

Debug & 64位下編譯工程

Release & 64位下編譯工程

至此膘掰,準(zhǔn)備工作完成涉波,各種文件皆已準(zhǔn)備妥當(dāng)

glew、freeglut所需的文件炭序。注意筆者并沒有將它們的lib啤覆、dll、.h文件摘出來存放在一個單獨(dú)的文件夾中惭聂,但后面你知道了必需哪些文件之后窗声,就可以這么做了。

以下內(nèi)容未包含CMake生成的64位工程文件辜纲;筆者生成的64位的freeglut VS工程文件夾為:freeglut 2

存放64位 freegult 的 lib 文件和 dll 所在的文件夾

它編譯出來的64 freegult 的 lib文件和 dll 文件在 下一篇中才會使用到笨觅。

搭建OpenGL開發(fā)環(huán)境

創(chuàng)建一個C++控制臺工程,然后先運(yùn)行或編譯下程序:


創(chuàng)建一個C++控制臺工程耕腾,名稱隨意取见剩。
筆者選擇了默認(rèn)設(shè)置,即包含了預(yù)編譯頭

運(yùn)行或編譯剛剛創(chuàng)建的工程
配置包含目錄扫俺、庫目錄

配置VS包含目錄和庫目錄時苍苞,它們分別都需要設(shè)置兩個路徑——glew的include路徑、freeglut的include路徑以及glew的lib路徑和freeglut的lib路徑
點(diǎn)擊項目->屬性->VC++目錄:


打開項目的屬性

找到VC++目錄的包含目錄和庫目錄

點(diǎn)擊編輯

注意狼纬,這里的包含目錄簡單是說就是我們需要包含.h文件的文件夾羹呵,你也可以在把這些.h直接添加到工程中:


配置包含目錄

這是glew的頭文件所在目錄,你可以打開文件夾去看看都是哪些.h文件疗琉。

這是freeglut的頭文件所在目錄冈欢,你可以打開文件夾去看看都是哪些.h文件。

包含目錄配置完畢盈简,點(diǎn)擊確定
配置庫目錄

這是freeglut所需要的庫文件路徑凑耻,你可以看看freeglut都需要什么 .lib文件

注意,freegult的庫文件(.lib)文件是你自己用CMake柠贤、VS2015最終編譯出來的香浩,需要不同版本的 .lib 文件,只需要更改好后种吸,重新編譯即可弃衍。

上面已經(jīng)詳細(xì)的教給你釣魚的方法,以后freeglut版本更新后坚俗,例如freegult 3.1.0镜盯,只需再次CMake、VS2015編譯即可猖败。

這是glew所需要的庫文件路徑速缆,你可以到里面看看glew都需要什么 .lib 文件

庫目錄配置完畢

顯式包含glew32.lib文件——以添加附加依賴項的方式:
點(diǎn)擊編輯

輸入glew.lib

依次點(diǎn)擊應(yīng)用、確定恩闻,庫文件配置完成

程序運(yùn)行所必需的 .dll 鏈接文件:

這是glew的.dll文件所在路徑
這是freeglut的.dll文件所在路徑艺糜,注意存在debug和release版本的 .dll 名稱上的差異,你可以自己到 ../bin/Release文件夾里面看看。

把這兩個.dll文件復(fù)制到exe同目錄下:


把.dll復(fù)制到我們的exe執(zhí)行程序的同目錄下

至此破停,OpenGL 的開發(fā)環(huán)境配置完畢翅楼。

注意,本文使用了一種比較麻煩的配置方式真慢,以后遇到其他的第三方庫也可以這樣配置毅臊。

這種方法比較安全,就算配置錯誤黑界、復(fù)制錯文件管嬉、誤刪文件,比較容易恢復(fù)朗鸠,最壞的情景也不過是刪除整個工程蚯撩,重來一遍,而不會對系統(tǒng)造成傷害烛占,在開發(fā)過程中埋下未知錯誤胎挎。

當(dāng)然有一種一勞永逸的方法來配置OpenGL開發(fā)環(huán)境,這等到我們測試成功之后再介紹扰楼,不過這種方法不太安全呀癣,請你在確保你知道你在操作什么的時候再使用在這種一勞永逸的方法。

測試OpenGL開發(fā)環(huán)境

轉(zhuǎn)接下文弦赖,測試我們配置好了的開發(fā)環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末项栏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蹬竖,更是在濱河造成了極大的恐慌沼沈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件币厕,死亡現(xiàn)場離奇詭異列另,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旦装,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門页衙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阴绢,你說我怎么就攤上這事店乐。” “怎么了呻袭?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵眨八,是天一觀的道長。 經(jīng)常有香客問我左电,道長廉侧,這世上最難降的妖魔是什么页响? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮段誊,結(jié)果婚禮上闰蚕,老公的妹妹穿的比我還像新娘。我一直安慰自己枕扫,他們只是感情好陪腌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烟瞧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪染簇。 梳的紋絲不亂的頭發(fā)上参滴,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音锻弓,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛族吻,可吹牛的內(nèi)容都是我干的辽旋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼杂拨,長吁一口氣:“原來是場噩夢啊……” “哼专普!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弹沽,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤檀夹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后策橘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炸渡,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年丽已,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚌堵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡沛婴,死狀恐怖吼畏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘸味,我是刑警寧澤宫仗,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站旁仿,受9級特大地震影響藕夫,放射性物質(zhì)發(fā)生泄漏孽糖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一毅贮、第九天 我趴在偏房一處隱蔽的房頂上張望办悟。 院中可真熱鬧,春花似錦滩褥、人聲如沸病蛉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铺然。三九已至,卻和暖如春酒甸,著一層夾襖步出監(jiān)牢的瞬間魄健,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工插勤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沽瘦,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓农尖,卻偏偏與公主長得像析恋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盛卡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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