CEGUI

CEGUI所用的数据文件除了少数的特殊情况外都是XML格式的。但是,为了清晰的说明数据文件代表什么类型的资源,数据文件并不是以“.xml”作为后缀,而是用更有意义的后缀名。比如,Imageset的后缀名是.imageset,Font的后缀名是.font,等等。下面将对每种文件类型做个简要的说明,以后将对它们进行更深入的讨论。

Imageset

这么说吧,通常,为了提到效率,我们需要把材质等图片组合成一个大的材质图片。在使用的时候就需要在它上面截取得到各个小材质。而这个Imageset就是保存各个小材质在整张源图片上的区域信息(源图片同样在Imageset中指定了)。每个区域信息都有一个独一无二的名字,当提到它们的名字的时候,系统就把它们当作图片处理。所以,也可以说Imageset中定义了一系列的图片。通过修改Imageset中的源图片名、各个小区域的位置和大小,就可以很轻松的改变所画GUI的外观。

Font

显而易见,Font文件定义了CEGUI使用的字体。所能定义的字体类型有两种:

l  FreeType Font
这是一种基于true-type(.ttf)的字体文件。从CEGUI 0.5.0开始,在.font文件中用Type="FreeType"指定这种字体类型。在更早的版本中,用"Dynamic"指定。

l  Pixmap Font
这种字体就是众所周知的位图字体,这种字体基于一个定义了文字图片的Imageset。从CEGUI 0.5.0开始,在.font文件中用Type="Pixmap"指定此字体。在更早的版本中,用"Static"指定。


Scheme

Scheme文件是把其他数据文件联系到一起的主要手段,同时它也是装载和定义各种控件最方便的方法。一个Scheme文件可以包含下面的一种或多种文件(当Scheme被载入的时候,它所包含的文件也将被载入并初始化):

* Imageset (either a full Imageset via XML, or a single image via an image file)
* Font
* WindowSet
* LookNFell
* WindowRendererSet
* WindowAlias
* FalagardMapping

1)Imageset and Font
它们已经被提到过了。这里列出来仅仅为了说明scheme可以包含它们。

2)WindowSet

 主要用来指明一个可载入模块(.dll,.so等)的名字,并列出它所使用的控件中你想注册的控件的名字。如果没有列出任何控件名,那么模块中所有的控件都将被注册。

3)LookNFell:

 皮肤,这里定义的就是我们的控件外观了。

4)WindowRendererSet
指明一个可载入模块(.dll等)的名字,并列出它所使用的窗口渲染器(window renderer)中你想注册的窗口渲染器的名字。如果没有列出任何窗口渲染器名,那么模块中所有的窗口渲染器都将被注册。“窗口渲染器”是一个可以控制基本窗口类型渲染的东西。所有的窗口渲染器都是利用'Falagard'蒙皮系统进行渲染的(尽管这不是非常必须的)。

5)WindowAlias
提供通过别名指定一个窗口/控件类型的方法。用此方法,也可以用另一个控件类型来“替代”一个已经注册的控件类型,这样就达到隐藏已注册控件的效果。

6)FalagardMapping
用来创建一个可用的WindowType类型。包含三个部分:TargetType --- 指定基类(具有相关功能);Renderer --- 指定窗口渲染器(可以控制渲染指定的TargetType);LookNFeel --- 指定要使用的皮肤(一般这个它们是通过XML格式的looknfeel文件指定)。

Layout
Layout文件用XML格式描述一个窗口的布局。每个镶嵌的“Window”元素定义一个要创建的窗口或控件,“Property”元素为每个定义的窗口设置相关属性。


Config

CEGUI支持使用配置文件。这个文件允许你定义一些默认参数,比如:默认载入的Scheme,默认载入的Layout,初始化和终止脚本文件(ScriptModule中使用),以及其他没有提到的东西。

CEGUI(Crazy Eddie’s GUI http://www.cegui.org.uk)是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。 CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,比如OGRE、Irrlicht和RenderWare等,关键需求可以简化为二点: 纹理(Texture)的支持直接写屏(RHW的顶点格式、正交投影、或者使用shader实现) 本书截止日时,CEGUI的最新版本是0.6.0(本书的讨论也是基于此版本),本书光盘提供了SDK和全部源码的下载。 除此之外,CEGUI还同步提供了官方界面编辑器LayoutEditor和ImageSet编辑器,以方便UI和图像集的制作。作为界面编辑器,它需要系统级界面以提供编辑器操作,0.3.0版是基于MFC实现的;而在0.4.0版本以后,改为基于wxWidgets(跨平台的本地UI框架,这里的UI指Window操作系统底层,如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。 目前将CEGUI作为游戏界面库开发的游戏已经有好多种,国内的天龙八部,巨人等游戏就是很好的例子。 CEGUI的功能是非常强大的,而且使用也非常的灵活,可以和脚本配合。可以通过配置文件自定义窗口外观。通过布局文件实现窗口布局等等特性,使得游戏的界面开发更加方便。
CEGUI的详细笔记和文档,学习游戏编程的朋友一定要看看 第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布局编辑器 - 10 - 1.3.2 图像集编辑器 - 12 - 1.4 CEGUI总体架构 - 13 - 第2章 CEGUI事件系统和属性系统 - 15 - 2.1 CEGUI的事件系统 - 16 - 2.2 CEGUI的属性系统 - 29 - 2.3 属性事件与布局文件 - 32 - 第3章 CEGUI基类的实现 - 39 - 3.1 窗口设计原理 - 39 - 3.2 Window类 - 40 - 3.2.1 Window类的继承关系以及与其相关的函数。 - 40 - 3.2.2 窗口的组织结构 - 41 - 3.2.3 窗口位置和大小 - 45 - 3.2.4窗口渲染 - 51 - 3.2.5 事件响应与处理 - 59 - 3.2.6 窗口状态 - 60 - 3.2.7 窗口与输入系统 - 61 - 3.2.8 窗口的其他功能 - 63 - 3.3 窗口类厂和类厂管理 - 64 - 3.3.1 窗口的类厂和类厂管理 - 64 - 3.3.2 渲染窗口的类厂和类厂管理 - 72 - 3.4 窗口管理系统 - 76 - 第4章 CEGUI核心控制体系 - 80 - 4.1 系统控制 - 80 - 4.1.1 系统变量 - 80 - 4.1.2 初始化和退出流程 - 82 - 4.1.3 输入系统的事件派遣流程 - 87 - 4.2 资源管理 - 96 - 4.2.1资源管理模式 - 96 - 4.2.2 图像集 - 102 - 4.3 系统接口 - 106 - 4.3.1 脚本接口 - 107 - 4.3.2 XML相关接口 - 107 - 4.3.3 图像解码接口 - 108 - 4.3.4 资源提供接口 - 109 - 4.4渲染机制 - 109 - 第5章 CEGUI应用程序框架 - 118 - 5.1 OpenGL程序框架 - 118 - 5.1.1 WIN32应用程序框架 - 118 - 5.1.2 OpenGL应用程序框架 - 122 - 5.1.3 CEGUI应用程序框架 - 124 - 5.2 CEGUI例子程序 - 125 - 5.2.1 加载资源和创建窗口 - 126 - 5.2.2 窗口的逻辑处理 - 127 - 第6章 外观系统 - 131 - .........

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值