1. 程式人生 > >OpenGL超級寶典(第五版) 環境配置

OpenGL超級寶典(第五版) 環境配置

特別提醒:有些在word中或者其他中的程式碼複製到vs中會報錯,原因是word中有些隱含的字元,複製到vs中就會報錯;重新輸一遍就可以解決問題,這裡只是提醒下!

 可以參閱我前面轉載的一篇文章,進行比較然後來配置,本人蔘照這兩篇,成執行,算是學習opengl的開始吧;

OpenGL超級寶典(第五版)環境配置

Vs2008+winXP  後續會整理Ubuntu 12.04LTS下的配置作者:sunny_unix

1.各種庫的配置

(1)glew

將include資料夾下的.h檔案拷貝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目錄中(沒有GL目錄就自己建立一個,這裡的具體路徑視電腦上VS2008安裝的位置而定)
將lib資料夾下的.lib檔案拷貝到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目錄中


將bin資料夾下的.dll檔案拷貝到C:\Windows\System32目錄中

(2)glut

將.h檔案拷貝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目錄中(沒有GL目錄就自己建立一個,這裡的具體路徑視電腦上VS2008安裝的位置而定)
將.lib檔案拷貝到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目錄中
將.dll檔案拷貝到C:\Windows\System32目錄中

環境變數配置好後不必每個新建專案都按照下面這樣配置。下面步驟僅限沒有進行上述配置的使用者。

2.
配置專案環境

在需要用到openGL的每個專案中都需要執行以下步驟:

(1)專案——專案屬性——配置屬性——C/C++— —前處理器——前處理器定義,新增

GLUT_BUILDING_LIB

(2)專案——專案屬性——配置屬性——連結器——輸入——附加依賴項,新增

glut32.lib Opengl32.lib Glu32.lib glew32.lib

3.應用舉例

(1)先建立一個Win32控制檯應用程式專案(檔案——新建——專案——win32——win32控制檯應用程式),在下面的名稱處任意命名,假定是helloworld,然後點確定。之後點下一步,然後在附加選項的空專案之前打勾,之後點完成。

(2)配置專案屬性:如上面所述2所述

(3)在解決方案管理器的原始檔資料夾上點右鍵,新增——新建項——c++檔案,任意命名,假定是Hello。

在導航窗格中的原始檔分類下的Hello.cpp中輸入如下程式碼:

[cpp]

1. #include <windows.h>   //這個必不可少

2. #include <gl/glut.h>

3. void display()  

4. {  

5. glClear(GL_COLOR_BUFFER_BIT);  

6. glColor3f(1.0,1.0,1.0);  

7. glBegin(GL_POLYGON);  

8.     glVertex3f(0.25,0.25,0.0);  

9.     glVertex3f(0.75,0.25,0.0);  

10.    glVertex3f(0.75,0.75,0.0);  

11.    glVertex3f(0.25,0.75,0.0);  

12.    glEnd();  

13.    glFlush();  

14.}  

15.void init()  

16.{  

17.glClearColor(0.0,0.0,0.0,0.0);   //以黑色清屏

18.glMatrixMode(GL_PROJECTION); //glMatrixMode - 指定哪一個矩陣是當前矩陣

19. //GL_PROJECTION,對投影矩陣應用隨後的矩陣操作

20.glLoadIdentity();           //該函式的功能是重置當前指定的矩陣為單位矩陣

21.glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0); 

22.}  

23.int main(int argc,char** argv)  

24.

25.{  

26.glutInit(&argc,argv);  

27.glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);  

28.glutInitWindowSize(250,250);  

29.glutInitWindowPosition(100,100);  

30.glutCreateWindow("Hello OpenGL");  

31.init(); 

32.glutDisplayFunc(display);  

33.glutMainLoop(); 

34.return 0;  

35.}  

執行結果是個矩形,成功!

4.OpenGL超級寶典第五版的例項程式碼執行方法:

條件:下載--SB-WinSrc.rarSB5.rar

SB-WinSrc.rar 解壓後將share資料夾放在程式碼的../../下面(程式碼中的GLTools.h位置)後將SB5.rar解壓後用已經配置好OpenGL的VS2008(上述配置過的那步)開啟SB5\freeglut-2.6.0\VisualStudio2008Static下編譯出freeglut_static.lib考到

C:\Program Files\Microsoft Visual Studio 9.0\VC\lib下後就能執行例項程式碼了

5.OpenGL超級寶典第五版的教學程式碼執行方法:

條件:SB5.rar

SB5.rar解壓後將SB5\Src\GLTools\include的標頭檔案考到C:\Program Files\Microsoft Visual Studio 9.0\VC\include中。

將SB5\VisualStudio2008\GLTools\Release中的gltools.lib考到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib中

執行時遇到錯誤的看下面:

1.      C:\Program Files\Microsoft Visual Studio 9.0\VC\include\glut.h複製到

C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL

2.      靜態庫動態庫編譯時都選---專案-----屬性----配置屬性---C/C++----程式碼生成----執行時庫都用和生成gltools.lib一樣的-------多執行緒/MT

3.      因為生成gltools.lib需要glew庫而第五版用的是OpenGL3.3所以glew要用1.9的版本而且要用生成gltools.lib的標頭檔案(在src目錄裡面)的glew.h  glxew.h  wglew.h 覆蓋原來的才行。

4.      現在開啟示例程式碼後選---屬性----配置屬性---C/C++----程式碼生成----執行時庫—MT後試試能不能執行,如果能執行那接著向下進行,如果失敗那先停在這看看前面自己仔細在檢查一遍解決完在向下進行。

5.      開啟gltools專案將專案-----屬性----配置屬性---C/C++----程式碼生成----執行時庫—多執行緒除錯/MDT後再次編譯一個MDT版本的庫後一次將freeglut_static.libfreeglut.lib一樣也編譯後覆蓋原來的。

6.      再次開啟剛才那個例項專案將專案-----屬性----配置屬性---C/C++----程式碼生成----執行時庫—多執行緒除錯/MDT後執行是否通過,通過就說明成功,忘了說一下執行前別忘了先清理一下專案!!。

關於後面的OpenEXR:

1)下載相關元件

IlmBase 1.02 source code release

OpenEXR 1.7.0 source code release

zlib125.zip

zlib125dll.zip

這裡需要說明的是,OpenEXR1.7.0用到的zlib版本為zlib-1.2.5,下載更新的版本會引起錯誤。

2)將下載檔案解壓到目錄C:/libs-x86下

開啟c:/libx-x86/ilmbase-1.0.2/vc/vc8/IlmBase/IlmBase.sln,選擇Tools->VisualStudio Command Prompt,在開啟的DOS介面輸入:

cd c:\libs-x86\ilmbase-1.0.2\Half

cl eLut.cpp

cl toFloat.cpp

eLut > eLut.h

toFloat > toFloat.h

生成相應的檔案。

3)選擇Debug配置,編譯解決方案

4)選擇Release配置,編譯解決方案

5)此時在C盤下建立了一個目錄C:\Deploy,目錄下有lib,include,bin三個子目錄。

6)複製zlib.h和zconf.h從目錄c:\libs-x86\zlib125到目錄c:\Deploy\include

複製zdllwapi.lib和zlibwapi.exp從c:\libs-x86\zlib125dll\dll32到C:\Deploy\lib\Win32\Debug

複製zdllwapi.lib和zlibwapi.exp從c:\libs-x86\zlib125dll\dll32到C:\Deploy\lib\Win32\Release

複製zdllwapi.dll從c:\libs-x86\zlib125dll\dll32到C:\Deploy\bin\Win32\Debug

複製zdllwapi.dll從c:\libs-x86\zlib125dll\dll32到C:\Deploy\bin\Win32\Release

在VS2010中開啟C:\libs-x86\openexr-1.7.0\vc\vc8\OpenEXR\OpenEXR.sln

選擇Debug配置,選擇ProjectIlmImf,右鍵ProjectOnly->Build OnlyIlmImf,然後再Build整個解決方案。

選擇Release配置,選擇ProjectIlmImf,右鍵ProjectOnly->Build OnlyIlmImf,然後再Build整個解決方案。

遇到問題及解決方案:

1)在Debug模式下,LINK : fatal error LNK1104: cannot open file'..\Win32\Debug\IlmImf.map'

解決方法:IlmImf右鍵->Properties->Linker->General->EnableIncremental Linking,設定為No。

之後考到相關目錄就行了,還有後面程式碼可能除了有問題還有就是你的電腦支援的opengl版本,太低的程式也不能執行!!!

上述方法僅限初學者學習OpenGL超級寶典(第五版)讀者可能遇到的問題,本人並不是老鳥為大家節省時間而已學習時沒必要按書上每次都要加額外庫。如果開發釋出版本程式碼可以參見書第一章節步驟這裡直接略過。

OpenGL學習群:134952390

今天除錯OpenGl的源程式,編譯通過,但一執行就提示,計算機丟失 glut32.dll檔案,鬱悶的不行,上網查了下,網上提供的絕大多是做法都是,先下載這個檔案複製這個檔案到 C:\WINDOWS\system 32中,但是照做了後發現依舊不行,折騰了一下午後,突然之間意識到可能是我新裝的windows 7系統有關,而且因為裝的是64位的,於是,試著將這個 glut32.dll複製到C:\WINDOWS中的SysWOW64的資料夾中,後來就全都ok了,唉,在此特記錄下來,提醒以後的各位裝了Win 7又裝了Vc++ 6.0的各位朋友注意一下。PS:剛開始接觸OpenGl的時候難免會遇到一些問題,這些問題可能和程式無關,只是一些編譯環境的設定和標頭檔案的安裝,特別整理了一下,如下:

1)將gult32.dllglut.dll複製到windows系統system32(如果是win 7 64位作業系統,則是C:\WINDOWS中的SysWOW64這個檔案下)

2)將gult32.lib,glut.lib複製到vclib目錄下

3)將gult.h複製到vcinclude\GL