1. 程式人生 > >用最簡單的方法配置執行OpenGL紅寶書原始碼示例

用最簡單的方法配置執行OpenGL紅寶書原始碼示例

筆者真是苦逼啊,之前花了很多時間去學習“基於OpenGL的圖形學”的開頭部分,包括書本和老師的PPT。但是到自己嘗試編譯執行示例程式碼的時候真是困難重重。而且!在自己胡亂摸爬滾打終於執行成功後不久,發現不論是老師的PPT還是書本,它們給的程式碼真是太少了,讓我沒法練習程式設計。我只好去圖書館找來一本OpenGL超級寶典。在學習了幾天後發現,這特麼程式碼都是過時的,時的,的。。。好吧,全部推倒重來。

http://www.opengl-tutorial.org/beginners-tutorials/tutorial-1-opening-a-window/就是看了這個網站,我才發現,我看的程式碼都是過時的,已經不用的了。他第一步就教你 Forget Everything:You don’t have to know anything, but you have to forget everything you know about OpenGL. If you know about something that looks like glBegin(), forget it. 

淦!筆者還是個零基礎的菜雞,為什麼這麼折磨我。無奈之下,我立馬買來一本《OpenGL程式設計指南 (原書第9版)》來學習。不過,折磨我的行為還沒有停止,這本書居然一點點配置環境的操作都不講!於是我只好上百度搜索了,不過,百度關於第9版的原始碼使用方法寥寥無幾。經過我不斷地嘗試,總結出一個非常簡單的方法,在這裡教給大家。

首先下載紅寶書原始碼

因為是零基礎新手寫的部落格,所以會非常的,詳細。點右邊的綠色按鈕,再點“Download ZIP”,等待下載。

把下載下來的壓縮包解壓到一個合適的地方,最好是沒有中文的路徑。比如我放到我平常放程式碼的資料夾:

安裝CMake

如果你已經有CMake的話就跳過安裝部分吧。

開啟CMake官方網站,下載CMake的安裝包,自行安裝。

選擇“Latest Release"目錄下的"Binary distributions"(也就是最新的發行版本)目錄下的msi安裝包,下載安裝吧。

安裝好之後你的選單就會多出一個CMake檔案夾了,執行CMake(cmake-gui)。

在第一欄選擇剛剛解壓的“examples-master”資料夾,在第二欄自己選擇一個資料夾,用來儲存CMake生成的專案。我這裡就直接選擇它裡面的build資料夾。

點Configure,彈窗保持預設即可,然後選擇“Finish”。(我的是最新版Visual Studio2017,如果你沒有,這裡選擇自己合適的吧。)

這裡不知道為什麼是紅色的,第一次用的時候不是這樣的。不過已經顯示“Configuring done”了,應該是沒問題的。

Configure完成之後就點“generate”。

Generate完成之後就點“Open Project”,這時應該會自動開啟一個Visual Studio專案。

到這時離成功已經很接近了,可以看到解決方案資源管理器有一大堆的專案。

這時直接除錯執行一次,或者對著“ALL BUILD”專案右鍵->除錯->啟動新例項。可能會報錯,不過實際已經成功了。(至少我是成功了,如果你不成功,那真要麻煩你自己想想辦法了,我也不太懂。。。)

然後執行幾個例子測試一下,用右鍵->除錯->啟動新例項的方法。

這是書上第一個例子,“01-triangles”:

還有其他例子,我還沒有學到這,所以也不知道是什麼。

這個厲害了,還會動。

如果你的例子沒有執行成功的話,我可能也幫不了你,因為我還是個新手。我只能在我僅有的一點點知識範圍內,給你提供一丟丟的幫助。如果你的電腦很舊的話,可能要考慮顯示卡OpenGL版本的問題。那麼怎麼檢視顯示卡支援的OpenGL版本呢?下載一個OpenGLExtensionViewer(http://realtech-vr.com/admin/glview),如下圖所示:

可以看到我的電腦可以支援到4.5版本的OpenGL,現在最新的版本也是4.5,這樣就可以放心大膽的開始OpenGL程式設計啦。(不要吐槽顯示卡啦,以後會有的)

以後可以直接在這個解決方案裡面新增資料夾放自己的專案,就不用再到處配環境了。學習知識而已,又不是專業配環境,不用在意那麼多細節。

總結:其實這波操作也是很簡單的呢,只是新手沒有人帶領的話,真的比較費勁。大佬都是直接一句“CMake一下就可以用啦”,對零基礎的新手沒有什麼幫助。希望通俗易懂的教程越來越多,學習越來越容易,這樣大家都可以快樂地進入更深層次的學習。

我寫的部落格真的非常簡單,又很多細節我想弄懂再給大家解釋,但是能力有限,時間有限。以後例項提升了,可能就能寫更好的部落格了。