---------------- 本文 ---------------
注意:筆者是以 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的頭文件:
GL.h:OpenGL所使用的函數(shù)和常量聲明旱眯。
GLU.h(OpenGL實用庫)所使用的函數(shù)和常量聲明愧怜。
不同的系統(tǒng)丸氛,這些文件的路徑和名字(大小寫)很可能是不同的,所以不用糾結(jié)這個問題禾锤,因為你若是直接引入這個頭文件私股,編譯則報錯。
此時先引入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:
下載FreeGLUT:
下載GLEW:
下載完成
安裝CMake
沒什么特別的,一路next下來即可度气。
編譯FreeGLUT文件
解壓freeglut-3.0.0.tar,并創(chuàng)建CMake編譯文件輸出文件夾:
打開CMake(cmake-gui), 如下圖二者之一:
在 where is the source code 中選擇解壓freeglut的目錄束凑,注意這個目錄內(nèi)包含了CMakeLists.txt。
在where to build the binaries 中選擇之前創(chuàng)建的CMake編譯文件輸出文件夾:
點(diǎn)擊Configure:
注意扒寄,如果出現(xiàn)錯誤提示,則先點(diǎn)擊File->Delete Cache之后拟烫,再點(diǎn)擊Configure该编,然后選擇不同的VS版本重試(前提是你的電腦確實安裝了該版本的VS):
Configur完成之后(注意勾選下圖列出的項课竣,特別是FREEGLUT_BUILD_SHARED_LIBS 和FREEGLUT_BULID_STATIC_LIBS),點(diǎn)擊Generate生成VS工程文件:
打開CMake輸出文件目錄置媳,找到freeglut.sln文件于樟,雙擊打開:
點(diǎn)擊生成->生成解決方法:
注意此時編譯出來的是debug、win32版本的freeglut3.0.0文件——需要release版本拇囊,需要在Release下迂曲,再次編譯一下即可(不過,原來的32位文件就被覆蓋掉了):
編譯完成后寥袭,再次打開工程所在文件夾(即CMake輸出文件夾)路捧;此時已經(jīng)編譯好了的freeglut文件就存放在lib、bin文件夾里面:
如果需要64位lib文件和dll文件杰扫,只需重新使用CMake 編譯生成,只不過選擇編譯器時選擇Win64而已:
至此膘掰,準(zhǔn)備工作完成涉波,各種文件皆已準(zhǔn)備妥當(dāng):
以下內(nèi)容未包含CMake生成的64位工程文件辜纲;筆者生成的64位的freeglut VS工程文件夾為:freeglut 2
它編譯出來的64 freegult 的 lib文件和 dll 文件在 下一篇中才會使用到笨觅。
搭建OpenGL開發(fā)環(huán)境
創(chuàng)建一個C++控制臺工程,然后先運(yùn)行或編譯下程序:
配置包含目錄扫俺、庫目錄
配置VS包含目錄和庫目錄時苍苞,它們分別都需要設(shè)置兩個路徑——glew的include路徑、freeglut的include路徑以及glew的lib路徑和freeglut的lib路徑
點(diǎn)擊項目->屬性->VC++目錄:
注意狼纬,這里的包含目錄簡單是說就是我們需要包含.h文件的文件夾羹呵,你也可以在把這些.h直接添加到工程中:
注意,freegult的庫文件(.lib)文件是你自己用CMake柠贤、VS2015最終編譯出來的香浩,需要不同版本的 .lib 文件,只需要更改好后种吸,重新編譯即可弃衍。
上面已經(jīng)詳細(xì)的教給你釣魚的方法,以后freeglut版本更新后坚俗,例如freegult 3.1.0镜盯,只需再次CMake、VS2015編譯即可猖败。
顯式包含glew32.lib文件——以添加附加依賴項的方式:
程序運(yùn)行所必需的 .dll 鏈接文件:
把這兩個.dll文件復(fù)制到exe同目錄下:
至此破停,OpenGL 的開發(fā)環(huán)境配置完畢翅楼。
注意,本文使用了一種比較麻煩的配置方式真慢,以后遇到其他的第三方庫也可以這樣配置毅臊。
這種方法比較安全,就算配置錯誤黑界、復(fù)制錯文件管嬉、誤刪文件,比較容易恢復(fù)朗鸠,最壞的情景也不過是刪除整個工程蚯撩,重來一遍,而不會對系統(tǒng)造成傷害烛占,在開發(fā)過程中埋下未知錯誤胎挎。
當(dāng)然有一種一勞永逸的方法來配置OpenGL開發(fā)環(huán)境,這等到我們測試成功之后再介紹扰楼,不過這種方法不太安全呀癣,請你在確保你知道你在操作什么的時候再使用在這種一勞永逸的方法。