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