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 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