【CEGUI】概念简介

发布时间:2025-12-10 11:35:02 浏览次数:2

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。
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477