微軟公司開發的visual c++6.0堪稱史上最易用、最成熟的開發工具。vc6以其小巧、輕便贏得了程序員的喜愛,以至於在VS大行其道的時代,很多程序員仍然使用vc6作為開發工具,vc6的歡迎性可見一斑。可惜vc6有一個缺點,那就是不能開發ogre應用程序。網上的教程,鏈接已經過時。個人也是查找了好多資料,搞了整整一上午才終於配置得差不多,但仍然失敗了好幾個,不過已經不影響大局了。
ogre是一個極其復雜的工程,它借助了許多的第三方庫,比如說boost、stlport。所以編譯ogre也是一個相當復雜的過程。尤其是在vc6中,缺少stlport的支持使得我們不得不重新編譯stlport庫。當然還涉及到了DirectX SDK的問題。
完整清單:
stlport 4.6.2
DirectX SDK 8.0&9.0
Ogre 0.13
Ogre Depencies 0.13
據此,ogre的編譯分三個部分進行。
一、編譯stlport
stlport是vc的一個拓展庫,在vc7也就是vc.net後才集成到vc裡面。也就是說vc6是不支持stlport的,我們得自行讓其支持
到stlport官網http://www.stlport.org/下載stlport庫,我這裡用的是4.6.2版本的。解壓縮至某一目錄,比如D:\STLport。然後點擊開始-》運行,鍵入cmd,打開命令提示符,切換到$STLPORT_DIR\src目錄下,鍵入"nmake -f vc6.mak",編譯stlport。注意:在運行命令之前,確保環境變量裡加入了nmake的路徑,沒加入也沒有關系,進入vc安裝目錄,裡面有個vc98-》bin,將bin文件夾下的VCVARS32.bat拖到命令窗口,然後回車就能設置nmake的路徑。等待幾分鐘後,就編譯完成了。
二、安裝DirectX SDK
一定要安裝DirectX X.X SDK(X指版本號),而不是什麼DirectX Aug08這些版本。vc6只支持8.0或9.0的版本,並不支持往後的版本。(記得原來編譯的時候不知道,下了DirectX Aug08,出了一大堆錯誤)下載地址參考CSDN上的這篇文章blog.csdn.net/asasj57/article/details/5641161
下載之後的安裝就沒什麼好說的了,直接解壓然後進入解壓目錄,運行setup.exe安裝就行了。
三、編譯ogre
現在到了最關鍵的了,到ogre官網下載ogre 0.13和ogre0.13的依賴庫。下載之後的ogre解壓到某一個文件夾,比如D:\ogreSDK。然後把ogre的依賴項解壓,而後將Dependencies和samples兩個文件夾復制到ogrenew裡面並且覆蓋掉同名文件夾。打開ogrenew裡面的工程文件,ogre.dsw。
選擇tools-》opyions,打開選項對話框,切換到directories選項卡,分別配置include files和library files
include files:
1.C:\DXSDK\INCLUDE \\DirectX 9.0的安裝目錄
2.D:\OGRESDK\OGRENEW\OGREMAIN\INCLUDE
3.D:\OGRESDK\OGRENEW\DEPENDENCIES\INCLUDE
4.D:\STLPORT\STLPORT
ps:這幾項的先後順序絕對不能錯,否則會出現一些莫名其妙的問題。
library files:
1.C:\DXSDK\LIB \\DirectX 9.0的安裝目錄
2.D:\OGRESDK\OGRENEW\OGREMAIN\LIB\DEBUG
3.D:\OGRESDK\OGRENEW\DEPENDENCIES\LIB
4.D:\STLPORT\LIB
同樣,這幾項也不能改動順序。
至於說DirectX 8.0要不要安裝,我的建議是最好安上,以免出現不必要的錯誤。安裝完畢之後,將其include文件夾和lib文件夾分別加入到vc6的目錄中的最後一項就行了。到這裡就沒有問題了,最後點擊build菜單-》Batch build,在出現的對話框中選擇build,然後ogre就開始自動編譯了。
我的情況是編譯之後,有幾個工程失敗了,提示都是
不知道這是不是stlport版本的問題,歡迎知道的朋友與我交流。不過幸虧這幾個錯誤不影響大局,所以我們才得以繼續。
經過大約20多分鐘的等待,ogre終於編譯完成了,我們來驗證一下是否真的編譯成功。
新建一個win32 console application工程,工程名就是ogre demo。選擇一個空的工程,點擊完成。
配置我們的工程:選擇project-》settings,打開工程選項對話框,切換到link選項卡,在category列表框中選擇input,在下面的文本框中輸入OgreMain.lib(注意不要帶_d,我們編譯出來的這個靜態鏈接庫是不帶_d的)。然後在下面的ignore libraries中輸入LIBCD.lib.點擊“OK”完成。
其實最好在working directory中輸入你的ogre編譯後的那些dll、lib的路徑,一般是$OGRE_DIR\Samples\Common\Debug,當然如果是Release版本就輸入release。這樣你就不用在每次生成EXE文件後,將這個文件復制到那個目錄下了。(筆者按:這樣雖說方便了一些,但通過筆者親測,這樣總是會導致一些莫名其妙的錯誤)
好了繼續我們的測試,新建一個cpp文件,在裡面鍵入如下代碼:
class test : public ExampleApplication { public: void createScene() { mSceneMgr->setAmbientLight(Ogre::ColourValue(1,1,1)); Ogre::Entity *ent=mSceneMgr->createEntity("head","robot.mesh"); Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); headNode->attachObject(ent); } }; int main() { test app; app.go(); return 0; }
如果不出意外的話,就會看到一個機器人顯示在屏幕上。
至此,我們的ogre編譯就算成功了。
-------------------------------------------------------------------------
寫在最後:
原文雖說有幾個工程沒有編譯成功,主要是集中在那幾個工具,例如XMLConver、MilkshapeExporler、MeshUpgrader、MatrialUpgrader。但是經過筆者的一番探索,總算是編譯成功。具體方法如下:這幾個工程普遍提示以下的錯誤,
d:\stlport\stlport\l\type_traits.h(361) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
解決方法很簡單,右擊沒有編譯通過的工程,比如MilkshapeExporler,然後選擇settings,打開工程設置對話框,在project options裡鍵入"/Zm500",然後點擊"OK"完成設置,最後編譯。。。成功!
開發3D游戲用的圖形引擎,OGRE:Object-Oriented Graphics Rendering Engine(面對對象的圖形渲染引擎),是用C++開發的面向對象且使用靈活的3D 引擎,它的目的是讓開發者能更方便和直接地開發基於3D 硬件設備的應用程序或游戲。引擎中的類庫對更底層的系統庫(如:Direct3D 和OpenGL)的全部使用細節進行了抽象,並提供了基於現實世界對象的接口和其它類。
它只是圖形引擎,並不包括聲音、物理引擎等的實現。
不是很懂啊