
---------------- 本文 ---------------
注意:筆者是以 Win10 + VS2015 為例
內容:安裝CMake、配置freeglut 、配置glew
版本:Window10、VS2015、CMake 3.8.0-rc-1、freeglut 3.0.0、glew 2.0.0
目標:使初學者不再為配置OpenGL相關環境苦惱
預熱
需要說明的是:OpenGL不需要安裝——它的實現早就在您的顯卡中存在了。
想要開發OpenGL程序,需要的只是它的一系列接口,而在真正開發時,也不需要在網上找OpenGL的頭文件,編譯器已經把關於OpenGL的頭文件放置在某一個位置中了。
查看OpenGL頭文件的方式是用VS隨便創建一工程(實例使用了預編譯頭),然后引入頭文件:
#include <gl\GL.h>
然后右鍵打開文檔、再在相應的選項卡上右鍵打開文件所在的文件夾,如下所示:



可以看到實例圖片中,包含這兩個OpenGL的頭文件:
GL.h:OpenGL所使用的函數和常量聲明。
GLU.h(OpenGL實用庫)所使用的函數和常量聲明。
不同的系統,這些文件的路徑和名字(大小寫)很可能是不同的,所以不用糾結這個問題,因為你若是直接引入這個頭文件,編譯則報錯。

此時先引入windows頭文件即可:
// stdafx.h : 標准系統包含文件的包含文件, // 或是經常使用但不常更改的 // 特定於項目的包含文件 // #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h> // TODO: 在此處引用程序需要的其他頭文件 #include <Windows.h> #include <gl\GL.h> #include <gl\GLU.h>
然而,即使如此也並不能立即用代碼創建一個窗口來瞧一瞧,因為:
OpenGL自身並不包含任何窗口任務或者處理用戶輸入的函數。
OpenGL也沒有提供任何用於表達三維物體模型、或者讀取圖像文件(例如JPEG文件)的操作。
所以熱身完畢。
准備
OpenGL既然沒有包含那些東西,那么我們自然需要用第三方軟件庫來完成這些功能,例如創建窗口、接受鼠標和鍵盤事件等。備選的第三方軟件庫還必須和OpenGL一樣支持跨平台移植,於是出現兩個大家都在用的第三方軟件庫:freeGLUT 和 GLEW。
FreeGLUT 是GLUT的一個完全開源替代庫。
GLEW是一個簡單的OpenGL擴展工具庫
本文與其說是OpenGL的開發環境配置教程,不如說是OpenGL相關的第三方軟件庫的開發環境配置教程。
下載
GLEW只需要去官網下載最新版本就可以了,里面包含了相關的頭文件和編譯好的lib、dll文件。
而FreeGLUT在官網中下載到的文件需要在本地進一步編譯,才能被我們使用,所以本文使用CMake來幫助我們編譯FreeGLUT。
各種官網地址
OpenGL: https://www.opengl.org/
FreeGLUT: http://freeglut.sourceforge.net/
GLEW: http://glew.sourceforge.net/
CMake: https://cmake.org/筆者提前准備了相應文件,不想麻煩的童鞋可以在這里下載它們
下載CMake:




下載FreeGLUT:


下載GLEW:

下載完成


安裝CMake
沒什么特別的,一路next下來即可。






編譯FreeGLUT文件
解壓freeglut-3.0.0.tar,並創建CMake編譯文件輸出文件夾:

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


在 where is the source code 中選擇解壓freeglut的目錄,注意這個目錄內包含了CMakeLists.txt。
在where to build the binaries 中選擇之前創建的CMake編譯文件輸出文件夾:


點擊Configure:



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


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


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




點擊生成->生成解決方法:


注意此時編譯出來的是debug、win32版本的freeglut3.0.0文件——需要release版本,需要在Release下,再次編譯一下即可(不過,原來的32位文件就被覆蓋掉了):

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

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



至此,准備工作完成,各種文件皆已准備妥當:

以下內容未包含CMake生成的64位工程文件;筆者生成的64位的freeglut VS工程文件夾為:freeglut 2

它編譯出來的64 freegult 的 lib文件和 dll 文件在 下一篇中才會使用到。
搭建OpenGL開發環境
創建一個C++控制台工程,然后先運行或編譯下程序:



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



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






注意,freegult的庫文件(.lib)文件是你自己用CMake、VS2015最終編譯出來的,需要不同版本的 .lib 文件,只需要更改好后,重新編譯即可。
上面已經詳細的教給你釣魚的方法,以后freeglut版本更新后,例如freegult 3.1.0,只需再次CMake、VS2015編譯即可。


顯式包含glew32.lib文件——以添加附加依賴項的方式:



程序運行所必需的 .dll 鏈接文件:


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

至此,OpenGL 的開發環境配置完畢。
注意,本文使用了一種比較麻煩的配置方式,以后遇到其他的第三方庫也可以這樣配置。
這種方法比較安全,就算配置錯誤、復制錯文件、誤刪文件,比較容易恢復,最壞的情景也不過是刪除整個工程,重來一遍,而不會對系統造成傷害,在開發過程中埋下未知錯誤。
當然有一種一勞永逸的方法來配置OpenGL開發環境,這等到我們測試成功之后再介紹,不過這種方法不太安全,請你在確保你知道你在操作什么的時候再使用在這種一勞永逸的方法。