2009年8月20日 星期四

OGRE 1.6.3搭配使用GCC 4.4.0

雖然說Ogre團隊很努力地讓Ogre成為一個跨平台與多編譯器的3D引擎
不過在Windows平台上
使用GNU GCC(MinGW)來開發還是抵不過Visual Studio的強勢佔有率與便利性
還有顯示用的DirectX也是微軟自家開發(MinGW不能編譯DX10的顯示套件)
再加上Visual Studio推出免錢版Express之下
狀態就更慘

同時,Ogre團隊修改給MinGW使用的版本
實在已經過於老舊,根本不能繼續在1.6版繼續執行
SDK更新到1.6.1版時就已經在註解說明,請直接下載最新的MinGW來使用
不需要管之前MinGW ToolBox

回到正題,那既然舊版本的MinGW已經接近快要淘汰的階段
那全部都使用最新的版本,包含GCC 4.4版如何呢?
畢竟上述SDK下載的註解也有說要用「最新版」
就這樣嘗試下去的結果....
主要卡了2個地方,FreeType與ODE
兩者都在最後連結時會判定無法執行
所以需要以GCC4重新編譯過
另一個就是OIS的部分,雖然編譯(Release)沒問題
可是執行時會死在搖桿的初始化(使用預設的ExampleFrameLinstner時)
沒辦法,除了在範例中把JoyStick的初始化取消外
就是重新編譯OIS

首先要做的就是下載最新的GCC 4.4.0
主要下載的有
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-objc-4.4.0-mingw32-bin.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz
pthreads-w32-2.8.0-mingw32-dll.tar.gz(這個似乎不太必要)
其它的就是
mingwrt-3.15.2-mingw32-dev.tar.gz
w32api-3.13-mingw32-dev.tar.gz
binutils-2.19.1-mingw32-bin.tar.gz
gdb-6.7.50.20071127-mingw.tar.tar
再全部解壓縮到指定的資料夾下即可
不過_mingw.h請自行在檔尾加上
#define __MINGW32_TOOLBOX_UNICODE__
這樣才有辦法使用UTFString這個類別(顯示中文用)
不然就只好一個專案一個專案檔加上這個OGRE_UNICODE_SUPPORT的參數
這樣才能使用中文與QuickGUI

再來上到FreeType、ODE與OIS的官網下載原始碼
注意!!!前兩個都不是最新版
FreeType的版本是2.3.5
ODE的話請下載0.9版(以上的版本也可以使用,但會發生執行錯誤)
OIS的話請放心下載最新版1.2.0沒問題
接著FreeType的話請利用Code::Blocks把Visual C的設定匯入
(直接在命令列下mingw32-make似乎沒辦法產生Debug版的Library)
而ODE的話,請使用builds資料夾底下premake的執行檔,輸入下列這串
premake --file=ode.lua --target=cb-gcc
將workspace與cpb檔產生出來後,再使用CB來編譯
OIS的話本身就有CB的相關檔案
比較麻煩的大概在於需要DirectInput的標頭檔dinput.h
這個就請自行下載微軟最新的DirectX SDK吧
(所以還是VS Express方便啊)

上述的函式庫準備完成後
那當然就是放入Depedenceies的資料夾中
OIS的DLL請放入Samples裡
建立整個Ogre,OK我們有了最新的MinGW了
另外,補充一點,這次使用GCC4所編譯出來的Ogre還需要搭配
libgcc_s_dw2-1.dll這個動態函式庫才可以運作
請從mingw底下的bin資料夾中複製出來到Ogre的執行檔旁

編譯完成Ogre後,我再次嘗試了一些額外的東西
像是Addon上的Hydrax、Caelum與Showcase上的Galaxy Engine
除了Hydrax的水面表現有相當的問題外,其它的部分都是OK的
因為Linux版的GCC現在也都是4.x以上的版本
我想接下來Windows版也終於要跟上了

沒有留言: