OpenGL初探-Win10+VS2017+freeglut+glew+gltools開發環境搭建

         最近在研究OpenGL,主要看的書是《OpenGL超級寶典(第5版)》,學習編程自然少不了從環境搭建開始,然後寫一個Demo,運行成功即告開篇成功,本篇文章將使用書本中的2.5章節《第一個三角形》的Demo爲例進行說明。

 一、準備

        學習OpenGL,那麼需要事先下載幾個庫,因爲他們是基礎庫,我們寫的有關OpenGL程序都是基於這幾個庫的API,分別是reeglut、glew、gltools,缺一不可,我在學習的時候沒用使用編譯好的lib文件,而是下載的源代碼,自己編譯的lib文件。

    1.freeglut

         下載freeglut

         freeglut的全稱是free OpenGL utility toolkit,其實他和opengl本身並沒有什麼關係,他的作用是方便程序員處理例如窗口,鍵盤事件,鼠標事件之類的東西。

         因爲他是跨平臺的,所以假如一個opengl程序是用glut開發的話,那在windows或者linux下是不需要進行任何的修改的。

         那爲什麼是freeglut而不是glut那?其實剛開始他就叫glut,不過老版本已經停止更新很久了,所以後來別人又建了個新的項目叫freeglut,API都是兼容的。

         我所使用的是最新版本:freeglut-3.2.1.tar.gz

   2.glew

         下載glew

         glew的全稱是OpenGL Extension Wrangler Library,是對OpenGL API的封裝,我所使用的版本是:glew-2.1.0.zip

   3.gltools

         下載gltools

         這個庫很多文章上都寫的googlecode,其實下載不了,github上可以下載,gltools是基於glew的,是對glew的再次封裝.

   4.CMake

          下載CMake

          CMake可以用來將上面的源代碼庫生成VS2017工程,然後通過VS工程生成對應的庫文件,如果大家下載的庫文件是lib文件,那麼可以不用下載CMake,我這裏使用的是CMake的可執行文件:cmake-3.17.3-win64-x64.zip。

二、編譯庫文件

  1.編譯freeglut

        這裏簡要講一下用CMake來對freeglut如何生成VS2017工程,詳細用法大家可以百度一下,很多教程。

        a.打開cmake-3.17.3-win64-x64\bin\cmake-gui.exe文件,會彈出一個CMake界面出來;

        b.將freeglut-3.2.1\CMakeLists.txt文件直接拖到CMake界面內;

        c.設置一下生成的工程文件目錄,如下圖:

           

        d.點擊Config按鈕, 選擇VS版本,如果只安裝了一個VS版本,那麼CMake會自動幫你選好版本,然後點擊"Finish"按鈕即可,如下圖:

           

        e.點擊完Finish後,在窗口內會生成很多Key-Value,最主要的是最下面的Log輸出,如果最後一行輸出"Configuring done",即告配置成功;

           

        f.最後一步,點擊"Generate"生成VS工程即可,在Log欄輸出"Generating done",即告生成功,然後我們就可以在build目錄下看到生成的VS工程啦;

           

        g.打開freeglut-3.2.1\build\freeglut.sln文件,編譯生成目標文件即可, 生成成功之後,會產生動態庫和靜態庫,分別在bin和lib文件夾下,我們這裏主要使用靜態庫.

        h.經過以上步驟, freeglut就生成成功了, 文件先留着備用,後面會講解如何配置和使用.

  2.編譯glew

        glew的源碼目錄下生成了三份老版本VS的工程文件(VC6\VC10\VC12),如果大家使用的VS版本是VC6\VC10\VC12,那麼可以直接使用即可。 

       如果沒有對應的版本,那麼有兩種方法可以解決:

       a.強制使用新版本的VS打開VC12的工程,如果順利的話也可以生成目標文件;

       b.按照生成freeglut的步驟使用CMake生成glew的VS2017工程文件。

  3.編譯gltools

       這個是最後的重頭戲,也是最麻煩的一個,因爲gltools只提供了linux版本,不能使用CMake來對其生成VS2017的工程,所以我們需要手動給gltools建立一個VS2017的工程。

       我們首先爲gltools建立一個靜態庫工程,如下圖:

       選擇好生成的目錄,然後點擊"確定"即可,接着GLTools的源代碼拷貝到工程目錄下,只拷貝.cpp文件即可(頭文件是否拷貝無所謂, 因爲在第三章節會作爲公共的頭文件進行配置), 然後右鍵點擊GLTools工程,選擇添加現有項,將.cpp文件添加到工程中.

       接着我們按照第三章節的前四步配置一下公共開發環境依賴庫,配置完成後,再做如下的VS工程屬性配置:

       1.刪除生成的預編譯頭文件stdafx.h和stdafx.cpp,並且同時修改VS工程屬性:

          右鍵GLTools工程->屬性->配置屬性->C/C++->預編譯頭->不使用預編譯頭

       2.設置包含目錄

          右鍵GLTools工程->屬性->配置屬性->VC++目錄->包含目錄->添加"$(SolutionDir)\..\OpenGL\include"

          注意:GLTools工程根目錄與OpenGL目錄需保持一致, 如果不一致, 請自行根據自己實際情況修改配置;

       3.設置庫目錄

           右鍵GLTools工程->屬性->配置屬性->VC++目錄->庫目錄->添加"$(SolutionDir)\..\OpenGL\lib\Debug"

           注意:debug和release版本的區別,不要配錯了,需要對應上.

       4.設置與處理器

           右鍵GLTools工程->屬性->配置屬性->C/C++->預處理器->添加"_CRT_SECURE_NO_WARNINGS"

       以上配置完成後,即可編譯生成靜態庫文件GLTools.lib.

三、配置公共依賴庫環境

        爲了便於後續OpenGL的需要,我們配置一個公共的開發環境依賴庫,配置完成後我們後續新建的工程直接簡單配置一下就可以使用上面我們生成的freeglut、glew和gltools了。

       1.新建一個目錄“OpenGL”,然後再建一個子目錄“GL”,如下圖圈起來的部分:

          

      2.將glew的頭文件都拷貝到OpenGL\include\GL目錄下;

      3.將freeglut的頭文件拷貝到OpenGL\include目錄下;

      4.將gltools的頭文件拷貝到OpenGL\include目錄下;

      5.將glew、freeglut、gltools的lib庫文件拷貝到OpenGL\lib目錄下,注意區分debug和release版本;

      至此公共依賴庫環境配置完成;

四、配置VS工程環境

       以書中《第一個三角形》例子爲例,新建一個Windows控制檯應用程序,工程取名"Triangle",然後我們來設置一下VS工程屬性。

       1.刪除預編譯頭文件pch.h和pch.cpp文件,並且同時修改VS工程屬性:

          右鍵Triangle工程->屬性->配置屬性->C/C++->預編譯頭->不使用預編譯頭

       2.設置包含目錄

          右鍵Triangle工程->屬性->配置屬性->VC++目錄->包含目錄->添加"$(SolutionDir)\..\OpenGL\include"

          注意:Triangle工程根目錄與OpenGL目錄需保持一致, 如果不一致, 請自行根據自己實際情況修改配置;

       3.設置庫目錄

           右鍵Triangle工程->屬性->配置屬性->VC++目錄->庫目錄->添加"$(SolutionDir)\..\OpenGL\lib\Debug"

           注意:debug和release版本的區別,不要配錯了,需要對應上.

       4.設置依賴項

          右鍵Triangle工程->屬性->配置屬性->鏈接器->輸入->分別添加GLTools.lib、glew32sd.lib、freeglut_staticd.lib

       5.設置忽略特定默認庫

          右鍵Triangle工程->屬性->配置屬性->鏈接器->忽略特定默認庫->分別添加LIBCMT、MSVCRT

       6.修改GLBatch.h文件

          將"#ifdef WIN32"改成"#ifdef _WIN32", 新版本的VS需要用"_WIN32"

       7.將書中的代碼敲到Triangle.cpp文件中, 網上也有人寫好的, 直接拷貝過去也可以.

       8.編譯運行,如果得到下面的結果,那麼恭喜你正式進入OpenGL的世界.

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章