CEGUI 学习笔记 - 启动详细分析
2010年11月12日
CEGUI是OGRE推荐 并支持最好的GUI框架。它被设计成具有非常好的移植性,扩展性,以及非常灵活的UI生成方式.
今天我也是初学CEGUI,看了下其源码,感觉其框架被设计的非常“离散”,这固然对使用者造成一定的困难,但它带来的好处却远远超过它的缺点。我们可以非常灵活的,以我们自己的方式配置出使用我们应用的架构。
我以我的理解方式先来大概说下CEGUI的整体框架. 首先,它和OGRE类似,都有个根对象,这里叫做System,它负责管理了整个框架的生成以及销毁.
System构造函数是这样写的
System(Renderer* renderer,
ResourceProvider* resourceProvider,
XMLParser* xmlParser,
ScriptModule* scriptModule,
const String& configFile,
const String& logFile);
这样的构造方式就体现了CEGUI离散但非常灵活的方式生成我们需要的框架.我们来详细解释下这里参数的作用。
1. renderer这指定了我们CEGUI系统的渲染设备。CEGUI的SAMPLE里提供了几种渲染设备,有D3D9 D3D8 D3D7 OPENGL等,我就不一一例了。也就是说,如果我们不想用它提供的默认渲染设备,我们可以自己继承Renderer类,来实现适合我们自己平台的渲染器。比如OGRE里就专门为CEGUI提供了自己的渲染器(感兴趣的读者,可以参考OGRE源码). 由于是GUI系统,不可能没有渲染设备,这也就默认规定了这个参数不可以为空,我们必须为它指定一个渲染器,否则会抛出一个Runtime错误.
2. resourceProvider 这个指定了CEGUI的资源提供者(暂时这么翻译吧:)).看过OGRE源码的读者肯定知道,OGRE里也有个类似的东东,叫OGREResourceManager,这里的功能和OGRE的差不多一样。也就是说它负责维护我们所有资源的搜索目录,以及资源的加载和释放. 这个参数如果为空的话,那么CEGUI会默认的采用库里已经写好的一个ResourceProvider,叫做DefaultResourceProvider.我们完全可以继承ResourceProvider来实现我们自己的ResourceProvider. 比如OGRE里,因为已经有了类似的资源管理方式,所以OGRE里就继承了ResourceProvider,把OGRE的那一套管理方式搬到CEGUI里了.
3. xmlParser 这个参数顾名思义,就是指XML的解析器。看看CEGUI考虑的多么详细,几乎它把能拆卸的模块都给独立开来,并且还能够自己定制,多么好的想法啊. 如果这个参数为空的话,那么CEGUI就会采用它默认的xmlParsel库,这里叫做ExpatParser. 我们也可以使用别的XML解析器,比如tinyXml(个人比较推荐这个拉:)).
4. scriptModule 脚本模块. 这个我还没有仔细分析过。不知道脚本在CEGUI里做什么用。可能是用脚本来动态的管理GUI吧(个人猜想,以后学习了再来补充). 这里如果是空的话, CEGUI不会给你创建一个默认的。CEGUI的库里只有对lua的封装库。
5. configFile 总配置xml. CEGUI里有非常多的配置文件,几乎每个模块都会涉及到一个。但这个配置文件是管理所有模块的配置文件的。说明白点,就是把所有模块的配置文件的文件名写在这个总的配置文件里。这个参数一般情况下是留空串的。但你也可以自己写这个配置文件,并把文件名传进去.也可以在System创建完之后,再自己按需每个模块单独加载配置。
6. logFile 日志文件名。默认为CEGUI.log。System里的构造函数里会判断,如果当前系统里没有Logger,那么它会用默认的DefaultLogger. 然而DefaultLogger里是不允许文件名为空串的,否则会抛出一个Runtime异常.所以,我们如果想屏蔽Logger信息的话,要自己继承Logger并实现,然后在System对象创建之前,生成我们自己的Logger.
这是System的参数详细解释,下一篇我将详细的说一下System里到底做了些什么事.
再说说System的构造函数里到底做了哪些事情。
详细的过程就不写了,只说说比较重要的几个步骤。
1. 如果ConfigFile不为空的话, 分析此XML,并得到相关的配置(比如Font,Scheme,Layout等).
2. 创建Logger.
3. 创建所有单件.
4. 创建系统内定的窗口样式.(必须创建,所有其它的样式都依赖于它们).
5. 如果Scheme不为空,加载Secheme.
6. 如果Layout不为空,加载Layout.
7. 如果Script Module不为空,加载Script Module.
8. 如果初始化Script不为空,运行它.
发表评论
-
转笔记
2012-01-20 10:06 870转笔记 2010年09月29日 *作者:alxston ... -
HTTP 错误 500.100 - 内部服务器错误 - ASP 错误 不能使用(未知的) 文件使用中
2012-01-20 10:06 558HTTP 错误 500.100 - 内部服务器错误 - ASP ... -
powerdesigner逆向工程生成PDM时的列注释解决方案
2012-01-20 10:06 628powerdesigner逆向工程生成PDM时的列注释解决方案 ... -
WinCe 配置文件解析
2012-01-20 10:05 653WinCe 配置文件解析 2011年01月20日 Win ... -
如何访问Facebook、Twitter及Youtube等网站
2012-01-20 10:05 10如何访问Facebook、Twitter及Youtube等网站 ... -
开机快速自动联网(一句话的VBS)
2012-01-19 15:07 727开机快速自动联网(一句话的VBS) 2010年10月20日 ... -
使用脚本程序管理Windows网络(3)
2012-01-19 15:07 616使用脚本程序管理Windows ... -
VBS WScript.Shell 隐藏cmd命令行
2012-01-19 15:07 788VBS WScript.Shell 隐藏cmd命令行 201 ... -
全自动申请qq号vbs代码
2012-01-19 15:07 725全自动申请qq号vbs代码 2011年08月25日 下面 ... -
利用VBS创建快捷方式
2012-01-19 15:07 952利用VBS创建快捷方式 2010年06月19日 利用VB ... -
NSClassFromString
2012-01-17 04:54 1794NSClassFromString 2010年11月06日 ... -
速度-电脑运行速度慢的各种原因及解决方法zz
2012-01-17 04:54 523速度-电脑运行速度慢的 ... -
Unity Android让游戏移植变得异乎寻常的简单
2012-01-17 04:53 926Unity Android让游戏移植变得异乎寻常的简单 20 ... -
config配置中文解释
2012-01-17 04:53 661config配置中文解释 2011年04月02日 con ... -
as3 正则表达式
2012-01-16 03:44 512as3 正则表达式 2009年10月04日 /\scom ... -
AS3正则与js正则中反向引用
2012-01-16 03:44 742AS3正则与js正则中反向引用 2010年09月29日 ... -
常用数字正则表达式
2012-01-16 03:44 767常用数字正则表达式 20 ... -
常用正则表达式
2012-01-16 03:44 638常用正则表达式 2010年04月17日 常用数字正则表达 ... -
揭开正则表达式的神秘面纱
2012-01-16 03:44 576揭开正则表达式的神秘 ...
相关推荐
CEGUI-DEPS-0.6.0-vc8.zip CEGUI编译依赖项 CEGUI
CEGUI-DEPS-0.7.x-r2-vc9,另外有配套CEGUI0.7.8下载,支持VS2008环境
是minGW编译OSG必须用到的依赖库。用于编译在Qt上使用的OSG库。
cegui-deps-0.8.x-src
第1章 CEGUI的简介 - 5 - 1.1CEGUI历史和本书使用的版本 - 5 - 1.2 CEGUI的编译和例子介绍 - 5 - 1.2.1CEGUI源代码的简介 - 5 - 1.2.2CEGUI源代码编译 - 7 - 1.3 CEGUI官方编辑器的介绍 - 10 - 1.3.1 CEGUI布局编辑...
已编译好的CEGUI DLL文件,支持OGRE渲染,不想自己编译的可以下载
1.CEGUI基本库,CEGUIBase,这个库是CEGUI最早的库,第一版的CEGUI就有这个工程。 2.CEGUI的渲染集,CEGUIFalagardWRBase库,这个库在现在这一版改动是最大的。 3.XML的解析库,共有四个库和1.2.1中介绍的四个对应。...
CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。 CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,...
3D GUI.非常全面,支持directx,opengl.控件齐全,适合game,3D应用等开发项目。
CEGUI的详细笔记和文档,学习游戏编程的朋友一定要看看 第1章 CEGUI的简介 - 5 - 1.1CEGUI历史和本书使用的版本 - 5 - 1.2 CEGUI的编译和例子介绍 - 5 - 1.2.1CEGUI源代码的简介 - 5 - 1.2.2CEGUI源代码编译 - 7 - ...
CEGUI 0.7.6 详细 帮助 文档
cegui-deps-0.8.x-src.zip
cegui界面库,包括源码,配合ogre引擎最佳。
Ogre 1.7.2..CEGUI 0.75 软件配置说明
网上收集的CEGUI教程,主要是Html格式和Word格式,需要的看看
My old gui. Wrote when I was 15. Good starting point if you want to make own gui system. Compile with cmd: gcc ceGUI.cpp -o cegui -lalleg -lalfont
CEGUI Gwen皮肤 该外观基于GWEN GUI系统( )的默认外观。 图形取自MIT许可下的GWEN,您可以在此处阅读, 或在本文档的底部。 这种皮肤最初是由克里斯·约翰逊(Chris Johnson)移植的。 如果您对原始端口有任何...
CEGUI-0.7.7.tar.gz CEGUI-0.7.7 源代码
CEGUI-DEPS
CEGUI详细教程PDF CEGUI详细教程PDF