CEGUI ,全稱 "Crazy Eddie's GUI System" ,是一個專門的用戶界面庫,開源并且免費(fèi),它支持 DirectX8 、 DirectX9 ,除了可以作為 OGRE 的界面外掛,還支持另一個免費(fèi)開源的 3D 引擎 Irrlicht 。由于它功能的相對強(qiáng)大和靈活, OGRE 的開發(fā)團(tuán)隊(duì)一直在推薦 OGRE 用戶使用這個 CEGUI 來開發(fā)用戶界面,逐漸拋棄 OGRE 本身過于簡陋的 GUI 插件。尤其是在行將到來的新版本 OGRE 1.5 的聲明中特別強(qiáng)調(diào)了這一點(diǎn),盡管這個版本仍然暫時保留內(nèi)置 GUI 系統(tǒng),但 OGRE 1.5 將會是最后一個保留內(nèi)置 GUI 的版本。 OGRE 看來似乎將專注于向一個純粹的、然而富于協(xié)作和擴(kuò)展性的圖形引擎發(fā)展,這應(yīng)該得益于它的龐大的社群支持,使得很多事情可以通過外掛一些更專業(yè)的引擎來實(shí)現(xiàn),物理引擎使用 ODE 、 Tokamak 、 NovodeX ,網(wǎng)絡(luò)引擎使用 openTNL 、 RakNet 、 eNet ,聲音引擎使用 FMod 、 OpenAL ,以及這個界面引擎,使用 CEGUI 。外掛現(xiàn)成模塊的好處就是可以專注于一個方面,開發(fā)一個五臟俱全的游戲引擎并不是個容易的事情,市面上最負(fù)盛名的幾個商業(yè)引擎的開發(fā), Unreal 、Renderware 、 Lithtech ,往往要耗費(fèi)數(shù)百人年,并且在這些商業(yè)引擎中同樣會使用外掛的商業(yè)庫,在這個年代,沒有人可以從頭創(chuàng)建一切。
CEGUI 基于 Unicode ,所以它支持中文字體的顯示, 但是對中文字符的輸入現(xiàn)在尚未解決,因?yàn)椴粩嘤衼碜灾袊?OGRE + CEGUI 用戶的質(zhì)詢和申請,對中文輸入的支持可能已在考慮中。
CEGUI 的官方主頁在這里:
Crazy Eddie's GUI System1. CEGUI 的 CVS 下載
使用 WinCVS ,使用方法參考
OGRE 一起學(xué) (1) —— 獲取 OGRE 。
(1) 在 WinCVS 主界面左欄選中 "cvshome" ;
(2) 從主菜單選擇 [Admin]-[Command Line...] ,彈出 "Command line settings" 面板,在 "Settings" 選項(xiàng)卡的上部輸入框里,輸入如下指令進(jìn)行登陸:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/crayzedsgui login當(dāng)彈出對話框問訊密碼時直接按回車。
(3) 成功登陸以后, WinCVS 主界面的下部信息欄會顯示這樣一條信息:
***** CVS exited normally with code 0 *****
code 0 就表示登陸成功,如果不成功,顯示為 code 1 。
(4) 登陸成功以后,再次打開 "Command line settings" 面板,輸入并運(yùn)行如下指令:
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/crayzedsgui co cegui_mk2CVS 源代碼就開始下載了。耐心等它下載完畢。
(5) 這時候在 WinCVS 主界面左欄的 “cvshome” 下邊,多了一個 "cegui_mk2" 的文件夾。你可以到硬盤的 F:\cvshome\cegui_mk2\ 看一下,所有的源代碼都在那里了。
2. CEGUI 本體 lib 和 dll 的編譯:
最好使用 VS.Net 2003 的 VC7.1 來編譯,它對 OGRE 和 CEGUI 的支持都很好。 VC7.0 和 VC7.1 都可以。
(1) 首先要下載編譯 CEGUI 所需的依賴項(xiàng),包括頭文件和庫,下載頁在這里:
http://crayzedsgui.sourceforge.net/modules.php?name=Downloads&d_op=viewdownload&cid=6首先下載
CEGUI Mk-2 Win32 Dependencies: Common Files ,這些是公用的頭文件;
其次根據(jù)你的編譯器版本選擇對應(yīng)的庫,例如我使用 VC.Net 2003 ,就選擇下載
CEGUI Mk-2 Win32 Dependencies: Libs for MSVC 7.1 。
下載以后分別解壓縮,把頭文件 cegui_mk2-deps-common\dependencies\include 和庫文件cegui_mk2-deps-vc7.1\dependencies\lib 這兩個目錄全部復(fù)制到 cvshome\cegui_mk2\dependencies 目錄下。
(2) 現(xiàn)在設(shè)置工作環(huán)境。打開 VS.NET 或 VS.NET 2003 ,在主菜單中選擇 [工具]-[選項(xiàng)...] ,打開 "選項(xiàng)" 面板,在左邊目錄選擇 [項(xiàng)目]-[VC++ 目錄] ,在右欄的 Include 和 Lib 目錄下添加以下路徑:
包含文件:
X:\cvshome\cegui_mk2\dependencies\include
庫文件:
X:\cvshome\cegui_mk2\dependencies\lib
注意把這幾條目錄放在目錄列表的最上面。
(3) OK. 現(xiàn)在打開 cvshome\cegui_mk2\makefiles\win32\VC++7.1\CEGUI.sln ,從主菜單中選擇 [生成]-[批生成...] ,打開 "批生成" 面板,點(diǎn)擊右邊的 [全選] 按鈕,然后點(diǎn)擊 [重新生成] 按鈕開始生成,靜待生成結(jié)束。
編譯生成的 *.dll 文件在 cvshome\cegui_mk2\bin 目錄下, *.lib 文件在 cvshome\cegui_mk2\lib 目錄下。
編譯成功以后,為了編譯以后的 CEGUI 相關(guān)項(xiàng)目,我們要在 VS.Net 的工作環(huán)境中添加 CEGUI 的 include 和 lib 目錄:
包含文件:
X:\cvshome\cegui_mk2\include
庫文件:
X:\cvshome\cegui_mk2\lib
3. 編譯 CEGUI 示例
(1) 首先來這里下載幾個 CEGUI 示例:
http://crayzedsgui.sourceforge.net/modules.php?name=Downloads&d_op=viewdownload&cid=5其中的 CEGUI under Ogre - Demo 4 和 CEGUI under Ogre - Demo 7 是帶有源文件的,我們挑選 CEGUI under Ogre - Demo 4 來嘗試編譯。
(2) Demo 下載以后解壓縮,文件目錄不要亂放,要放到 cvshome 目錄下。
然后雙擊 cvshome\ogre_gui_demo4\CEGUIOgre_TestDriver1.sln 打開解決方案。
由于 CEGUI 作者的疏忽, Release 的項(xiàng)目設(shè)置里有幾個多余的 lua.lib ,會導(dǎo)致編譯時因找不到這些庫而失敗,所以我們需要刪除這幾個庫。打開 CEGUIOgre_Demo4 的項(xiàng)目屬性,刪除 Release 配置屬性的 [鏈接器]-[輸入]-[附加依賴項(xiàng)] 條目中的
liblua.lib liblualib.lib libluabind.lib 這幾個庫。
(3) 然后生成。
生成的 *.exe 文件在 cvshome\ogre_gui_demo4 的 Release 和 Debug 目錄下。但是你現(xiàn)在就打開運(yùn)行肯定會失敗。
失敗的原因首先是因?yàn)檫@個 Demo 使用的是最新版本的 OGRE 的頭文件和庫來編譯,但是 Release 和 Debug 目錄下放的是老版本的 *.dll ,所以你需要把 cvshome\ogrenew\Samples\Common\bin 的 Release 和 Debug 目錄下的所有 *.dll 都復(fù)制到 cvshome\ogre_gui_demo4 的 Release 和 Debug 目錄下,用你的最新版本覆蓋舊版本,這是一個;
然后, CEGUI 的依賴項(xiàng)中需要一個 *.dll ,在 cvshome\cegui_mk2\dependencies\lib 中有兩個 *.dll ,把 xerces-c_2_5_0.dll 復(fù)制到 cvshome\ogre_gui_demo4\Release ,把 xerces-c_2_5_0D.dll 復(fù)制到 cvshome\ogre_gui_demo4\Debug 。
還有 CEGUI 本體的 *.dll ,在 cvshome\cegui_mk2\bin 目錄下,也要全部復(fù)制過來。 *.dll 文件名帶 _d 的是 Debug 版本。
OK. 現(xiàn)在示例可以運(yùn)行了。
作為對 CEGUI 的一個應(yīng)用實(shí)例,你可以下載下面這個 OGRE 粒子編輯器來體驗(yàn)一下:
ParticleEditor_AlphaDemo