CEGUI概念简介
Posted 林多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CEGUI概念简介相关的知识,希望对你有一定的参考价值。
CEGUI 概念简介
背景
Crazy Eddie’s GUI(MIT License),一款开源的GUI(图形用户界面)库。使用C++实现,遵循OOP,其宗旨:
games developers who should be spending their time creating great games, not building GUI sub-systems.
目前最新版为0.8.7,官网(http://cegui.org.uk/)
下文以0.8.7版本进行介绍。
架构图
- ImageCode:图形解码模块(如:FreeImage、SILY等)
- ResourceProvider:资源管理模块
- XMLParser: XML解析
- ScriptMode:脚本模块
- Render+Texture:渲染器模块(如:OpenGL、DirectX等)
- InputEvent:输入系统模块
- CEGUICoreWindowRenderSet:窗口渲染模块
- Base(System):CEGUI核心控制体系模块,包括执行流、资源管理、图像集、系统接口
主要概念
属性
属性系统(Property)
CEGUI中的属性,其实就是一组数据。这些数据可以影响窗口的外观、行为等等。
不仅Window,所有对象,都可以有属性。
属性系统的诞生,是为了可以通过脚本,利用xml动态配置窗口的相关数据。
- 例
<Property Name="UnifiedMaxSize" Value="1,0,1,0" />
事件
事件系统(Event)
事件是窗口通知外部自身状态改变的机制或者方法。当某个时间发生时,调用某些函数处理通知事件。
CEGUI中的事件系统通过事件标识+一组处理函数组成。
对于Callback函数,CEGUI封装了下面几种类型:
事件和属性系统,主要是为了在XML中设置窗口事件和窗口逻辑。
资源管理
CEGUI中主要有以下几种资源:
- .scheme文件:CEGUI系统用到的各种数据的定义,如字体信息、图像集信息、窗口外观信息。
<?xml version="1.0" ?>
<GUIScheme Name="TaharezLook">// 表示scheme
<Imageset Name="TaharezLook" Filename="TaharezLook.imageset" />// 图像集
<Font Name="Commonwealth-10" Filename="Commonwealth-10.font" />// 字体
<LookNFeel Filename="TaharezLook.looknfeel" />//外观文件(falagard系统)
<WindowRendererSet Filename="CEGUICoreWindowRenderSet" />// 窗口渲染模块
<FalagardMapping WindowType="TaharezLook/Tree" TargetType="CEGUI/Tree"
Renderer="Falagard/Tree" LookNFeel="TaharezLook/Tree" />// 外部名称、内部名称、渲染窗口、外观
</GUIScheme>
- .looknfeel文件:外观系统,可以提供 XML 文件指定窗口的图像布局,子窗口的布局,默认属性,属性定义等.
- .imageset文件:图像集文件。将一副图像看成若干小图像的集合。图片位置信息,区分各个小图像。(图像集的大小,需为2的幂尺寸,此时显卡处理效率最佳)
- .layout文件:布局文件,包含了一个窗口的布局信息。
<?xml version="1.0" encoding="UTF-8"?>
<GUILayout version="4">
<Window type="TaharezLook/FrameWindow" name="Frame" >
<Property name="Text" value="Console" />
<Property name="TitlebarFont" value="DejaVuSans-10" />
<Property name="MaxSize" value="1,0,1,0" />
<Property name="TitlebarEnabled" value="True" />
<Property name="Area" value="0.208832,0,0.650387,0,0.80736,0,0.998062,0" />
<Window type="TaharezLook/MultiLineEditbox" name="ConsoleText" >
<Property name="Text" value=""/>
<Property name="ReadOnly" value="True" />
<Property name="MaxTextLength" value="1073741823" />
<Property name="MaxSize" value="1,0,1,0" />
<Property name="Area" value="0.019238,0,0.030633,0,0.973721,0,0.769186,0" />
</Window>
<Window type="TaharezLook/Editbox" name="Input" >
<Property name="MaxTextLength" value="1073741823" />
<Property name="MaxSize" value="1,0,1,0" />
<Property name="Area" value="0.019238,0,0.772141,0,0.973721,0,0.980658,0" />
</Window>
</Window>
</GUILayout>
窗口
- CEGUI中的窗口是一个抽象的概念。其可简单理解为,是一个可独立描画的单位
- CEGUI的设计思想,以窗口为单位的WidgetSets。
以上是关于CEGUI概念简介的主要内容,如果未能解决你的问题,请参考以下文章
VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)