為Visual Studio量身訂製Freeglut

來源:互聯網
上載者:User

標籤:

在Windows下使用微軟的Visual Studio來開發應用的程式員很普遍。而在Visual Studio下配置Freeglut,多數都是通過在網上直接下載已經為特定版本的Visual Studio編譯好的二進位檔案來進行。然而Visual Studio的版本已有很多,因此這些直接下載的檔案不一定適合我們自己使用的Visual Studio。Freeglut作為一個跨越平台的OpenGL開發工具,已經充分地考慮到各種平台下的配置安裝需求,但它並沒有直接提供可拿來就用的二進位形式,相反,只是提供了原始碼,程式員依據各自的平台進行相應的編譯後,就可得到適合自己的版本了。但此過程相對比較繁瑣,從而造成眾多程式員不知從何下手。

本文詳細介紹了如何為免費的Visual Studio Community 2013編譯並配置freeglut,最後開發並運行一個最簡單的OpenGL應用。

下載並安裝免費的Visual Studio Community 2013

到這裡下載vs_ommunity.exe。最好用IE來開啟上述地址,別的瀏覽器可能可以訪問網頁,但點不開。這是一個大小僅為1.18M的線上安裝程式。也可以訪問此頁面來選擇下載大小為6.89G的DVD9 ISO映像檔案。這兩種形式的檔案,我都試過了,ISO映像檔案可以裝在32位的Win7上面,但在64位的Win7上,好像裝不了,如果遇到這個問題,可選擇線上安裝程式。

下載並安裝…… 這可是一個漫長的過程,尤其是線上安裝。我上班前開始線上安裝,下班後,哈,自動安裝完畢了。

如果需要,也可以安裝簡體中文語言套件。

下載Freeglut

到Freeglut官網上下載Freeglut,並將其解壓到一個檔案夾下面,如C:\freeglut。其目錄下有兩個重要檔案夾,一是include,包含了C的標頭檔,另一是src,存有我們將要編譯的原始碼。

編譯Freeglut

到cmake.org上下載一個可直接在Windows上安裝的CMake,並雙擊此檔案以安裝。

安裝好後,運行CMake,依照進行設定。

Where is the source code用以指定我們所解壓的Freeglut的目錄,此目錄下有一個src的子目錄。Where to build the binaries用於指定Freeglut編譯後的存放結果的目錄。這裡,我在一個temp的目錄下建了一個freeglut_32的子目錄,這是因為我想在我的64位作業系統編譯一個32位的Freeglut。原因下面再作進一步的解釋 。

點擊Configure按鈕。將彈出一個如所示的視窗。

在Specify the generator for this project的下拉框中選Visual Studio 12 2013。我們在上面所下載的Visual Studio Community 2013,其版本號碼為12,發布時間應為2013。下拉框中還有一個比較接近的Visual Studio 12 2013 Win64的選項,可編譯為64位的Freeglut。如前所述,我這裡想要一個32位而不是64位的,故不選此選項。

點擊Finish按鈕。CMake將依據選擇進行第一遍的編譯。然後,如所示,暫時停止編譯,以讓我們作進一步選擇。

其中FREEGLUT_GLES是為嵌入系統而編譯,不是我們擬開發的案頭應用所需,故不選。其中均選。

然後,再次點擊Configure,紅色背景消失,表示可進行下一步的編譯了。再點擊Generate按鈕,CMake瞬時顯示Generating done,表示編譯完成。此時可關閉CMake應用。

此時,在C:\UserData\Sarkuya\temp\freeglut_32下面,將產生許多檔案,其中有一個是freeglut.sln檔案,這是Visual Studio的Solution檔案。雙擊此檔案,Visual Studio運行並載入此方案。此方案下共有27個項目。在Visual Studio中按F7鍵,編譯整個方案。

編譯方案後,不僅產生了我們所需的檔案,還帶有一些可以直接啟動並執行OpenGL應用。

我們可以在Visual Studio中選中特定的項目,如smooth_opengl3項目,按右鍵,選Set as StartUp Project,將其設為啟動項目後,按F5鍵,運行該項目,就可出現一個迷人的多彩三角形。

這個三角形同時也告訴我們,Freeglut已經編譯完畢,整裝待發了。關閉smooth_opengl3應用,同時也Visual Studio。看完別人演的電影,我們也要開始自編自導了。

製作32位的Freeglut發行包

建立一個名為freeglut-3.0.0-msvc-compiled的檔案夾,此檔案夾將成為發行包的根目錄。下面我們手工製作這個發行包。

我們在上面下載並解壓的C:\UserData\Sarkuya\Tools\Programming\FreeGlut\freeglut-3.0.0檔案夾下,將子檔案夾include複製到freeglut-3.0.0-msvc-compiled的檔案夾中。

在freeglut-3.0.0-msvc-compiled檔案夾下建立一個lib子檔案夾,
將C:\UserData\Sarkuya\temp\freeglut_32\lib\Debug檔案夾下的所有三個檔案: freeglut_staticd.lib, freeglutd.exp及freeglutd.lib,全部複製到建立的lib子檔案夾中。

在freeglut-3.0.0-msvc-compiled檔案夾下建立一個bin子檔案夾,在C:\UserData\Sarkuya\temp\freeglut_32\bin\Debug檔案夾,找到freeglutd.dll檔案,將其複製到建立的bin子檔案夾中。

此時,freeglut-3.0.0-msvc-compiled的檔案夾的結構如下:

freeglut-3.0.0-msvc-compiled  --> bin    --> freeglutd.dll  --> include    --> GL      --> freeglut.h      --> freeglut_ext.h      --> freeglut_std.h      --> glut.h  --> lib    --> freeglut_staticd.lib    --> freeglutd.exp    --> freeglutd.lib

我們的32位發行包製作完畢。如果有需要,可將其打包為一個壓縮檔,並放在網路上供他人下載使用。

將Freeglut發行包配置到Visual Studio環境

Visual Studio的C/C++應用的標頭檔目錄是C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include。將發行包GL目錄下的四個標頭檔複製到其下面的GL子目錄中(如果VC的include目錄下還沒有GL子目錄,則需手工建立)。

Visual Studio的C/C++應用的庫檔案目錄是C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib。將發行包lib目錄下的三個檔案複製到其下面。

將發行包bin目錄下的freeglutd.dll檔案複製到C:\Windows\SysWOW64目錄中。如果您的作業系統是32位的,則需複製到C:\Windows\System32目錄中。

64位的作業系統在連結時將自動在C:\Windows\SysWOW64目錄中尋找freeglutd.dll,而32位的作業系統則自動在C:\Windows\System32目錄中尋找。因此,儘管我的作業系統是64位的,但由於我要開發的OpenGL應用僅為32位(這即是本文製作32位Freeglut發行包的原因),也應將這個32位的freeglutd.dll複製到C:\Windows\SysWOW64目錄中。

開發基於Freeglut的OpenGL應用

現在,我們要開發一個簡單的OpenGL應用,以驗證我們的32位Freeglut發行包是否能發揮作用。

啟動Visual Studio,建立一個Win32 Console Application的Visual C++項目,在main.cpp檔案輸入以下內容:

#include <GL/freeglut.h>void display() {    glClear(GL_COLOR_BUFFER_BIT);    glBegin(GL_POLYGON);        glVertex2f(-0.5, -0.5);        glVertex2f(-0.5,  0.5);        glVertex2f( 0.5,  0.5);        glVertex2f( 0.5, -0.5);    glEnd();    glFlush();}int main(int argc, char** argv) {    glutInit(&argc, argv);    glutCreateWindow("Freeglut Hello World");    glutDisplayFunc(display);    glutMainLoop();}

在Visual Studio中按下F5鍵,程式運行後,出現:

(很慚愧,我的OpenGL功力僅能讓此四邊形出現,僅此而已!但如果此話打擊了您進一步學習OpenGL的自信心,看看本部落格中我的頭像。這是我約在三年多前使用OpenGL製作的一個正十二面體,將其擺正後渲染得出的效果。)

別不相信,我們根本不需要在Visual Studio中進行更多的設定就能讓此程式運行起來。如,無需設定include目錄,因為我們已將相應的標頭檔複製到Visual Studio的預設包含目錄中;無需設定庫依賴關係,因為Freeglut已在其freeglut_std.h中自動為我們掛上了OpenGL應用所需的glu32.lib, opengl32.lib, gdi32.lib, winmm.lib, user32.lib這五個庫了;也無需將freeglutd.dll複製到應用目錄中,因為我們已將其複製到系統的預設路徑中。

是的,令人熱血澎湃的OpenGL應用原本就應該如此簡單!

為Visual Studio量身訂製Freeglut

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.