OGRE (18) —— OGRE + CEGUI :強大的使用者介面[ 2004-10-22 12:08:28 | Author: 燕塵 ] Font Size: Large | Medium | Small CEGUI ,全稱 "Crazy Eddie's GUI System" ,是一個專門的使用者介面庫,開源並且免費,它支援 DirectX8 、 DirectX9 ,除了可以作為 OGRE 的介面外掛,還支援另一個免費開源的 3D 引擎 Irrlicht 。由於它功能的相對強大和靈活, OGRE 的Team Dev一直在推薦 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 System
1. 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_mk2
CVS 原始碼就開始下載了。耐心等它下載完畢。
(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