没有合适的资源?快使用搜索试试~ 我知道了~
在游戏中使用CEGUI —— 第一章(底层).pdf
5星 · 超过95%的资源 需积分: 9 16 下载量 139 浏览量
2012-08-02
16:20:47
上传
评论
收藏 896KB PDF 举报
温馨提示
试读
18页
在游戏中使用CEGUI —— 第一章(底层).pdf BY 唐亮(千里马肝),四年游戏从业经验,曾任职于大宇软星科技上海)有限公司程序技术指导
资源推荐
资源详情
资源评论
在游戏中使用“CEGUI” — 第一章(底层)
日期:2006/4/13 – 2006/10/10
本文首次刊登于《游戏创造》,现开放与大家共享,转载请注明出处。
作者介绍
唐亮(千里马肝),四年游戏从业经验,曾任职于大宇软星科技(上海)有限公司任程
序技术指导,现在 ATI 任 Engineer,主要负责 XP/Vista 下的 Display Driver。迄今为止主要
个人作品为《阿猫阿狗 2》,参与开发《汉朝与罗马》、《阿猫阿狗大作战 OLG》和《仙剑奇
侠传 4》,主要研究方向为 C++、图形渲染技术和系统架构。
blog 地址:http://oiramario.cnblogs.com
简介
CEGUI(Crazy Eddie’s GUI http://www.cegui.org.uk)是一个自由免费的 GUI 库,基于
LGPL 协议,使用 C++实现,完全面向对象设计。CEGUI 开发者的目的是希望能够让游戏
开发人员从繁琐的 GUI 实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。
CEGUI 的渲染需要 3D 图形 API 的支持,如 OpenGL 或 Direct3D。另外,使用更高级
的图形库也是可以的,像是 OGRE、Irrlicht 和 RenderWare,关键需求可以简化为二点:
1. 纹理(Texture)的支持
2. 直接写屏(RHW 的顶点格式、正交投影、或者使用 shader 实现)
本文截止日时,CEGUI 的最新版本是 0.4.1(本文的讨论也是基于此版本),提供了 SDK
和全部源码的下载,同时为了适应不同的使用需求,还根据 STL 的使用区分为 Native(VC
自带的 P.J. 版 STL)和 STLport (基于 SGI STL 实 现 的 跨 编 译 器 版 本 , 详 细 见
http://www.stlport.org),以及 VC6.0、VC7.0、VC7.1 和 VC8.0 几种。
除此之外,CEGUI 还同步提供了官方界面编辑器 LayoutEditor,以方便 UI 的制作,下
载地址:http://www.2dgame-tutorial.com/downloads/CELayoutEditorSetup_0.4.1.exe。作为界面
编辑器,它需要系统级界面以提供编辑器操作,在此之前的 0.3.0 版是基于 MFC 实现的;
而在 0.4.1 版本中,改为基于 wxWidgets(跨平台的本地 UI 框架,这里的 UI 指 Window 操
作系统底层,如:Windows、Unix 和 Mac,详见 http://www.wxwidgets.org)实现。
OGRE 作为目前最活跃的开源 3D 引擎,许多公司开始使用它进行游戏开发,原因也是
其功能非常得全面和强大。在最初,OGRE 曾经实现过一版 UI,但是最后却放弃自己的实
现而选择了 CEGUI。
Why
很多人可能会觉得 UI 这种东西很简单,自己写就好了。我想这首先要看标准是什么了,
如果只是简单的按钮、图片什么的控件,那当然不必要去负担如此大的一个库。但是,如果
是以 Windows 9x 这样为标准,那么就不是一般得复杂了,M$也不是白混的,还要继续坳的
话,那么就请自己试实现一次吧,就会发现其实事情不像是看上去那么容易。
另外,CEGUI 也是由人设计出来的,我坚信会有其他的大牛可以做得到。但是,这样
做真的有必要吗,有可能你在 De 一个别人 2 年前早已修掉的 Bug,而别人这时正在做下一
代框架,干麻不花这个时间一起去完善它呢?
最后,我想就是开源的力量。凡事不去尝试,是不会了解到其真象的。为什么会有所谓
头脑风暴,这就是集体的力量,广大人民群众齐心协力,会让人感到个人力量的有限。
那么,让我们放下成见,卸掉包袱,开始这一次 CEGUI 之旅。
设计思想
WidgetSets
CEGUI 的设计思想是以窗口为单位的 WidgetSets,它称作这些 WidgetSets 为 xxxLook,
例如自带的两个 TaharezLook 和 WindowsLook,也就是说在同一个 Look 里,所有的同类型
的控件都长一个模样(这个可能无法满足我们通常游戏中的需要,所以要对其进行一些改
造),感觉上比较像 Windows98 的 Theme(主题),只不是 Theme 的概念更大,包括了桌面、
音效和鼠标等。
TaharezLook WindowsLook
如上左右二图,可以看到,所有该 Look 所支持的 Control 类型所需要的图素都被一张
图片所包含,假设需要更改样式和外观,可以设计多张拥有同样结构和相同元素的图片,然
后换图即可。
体系结构
CEGUI 的窗口体系结构,跟以往我们所了解的一样,它底层的基类是 Window,如下图:
以上便是 CEGUI 提供给我们的控件集合,其他不在此范畴内的复合控件,也可以使用这
些基本控件组合而成。
Window
可以看到,中间黑块中的 Window,它继承于 PropertySet 和 EventSet。从这里开始,
需要说明一个 CEGUI 中常见的概念:在 CEGUI 中,如果存在某对象为 xxx,通常会有一
个 xxxSet 与之对应,而 xxxSet 的任务是对其进行管理或是分发的工作。因此,对于
PropertySet 而言,同时存在有 Property,而 Property 的概念是:构建一个物件所必须的
属性或组件。
举例来说,WindowProperties::AbsoluteHeight 是一个在 namespace WindowProperties
中的一个 Window 属性 AbsoluteHeight,用作描述 Window 的高度。同理,EventSet 是全部
Window 事件的集合,其中就有像 EventSized 用作描述 Window 大小改变的事件(理解同“消
息”)。
Window 拥有了 PropertySet 和 EventSet 的特征后,在初始化的时候,它自己便会往里
面“填入” 许多的属性和事件,丰富一番后,它也会定义一些接口,供子类继承或是供外
部操作使用,像是会有接口 virtual void drawSelf(float z) = 0;(供子类实现绘
制),当然也会有一些公共的操作接口,如 void setYPosition(float y);(设置坐标)。
在上图的右边,有一长串由 Window 派生出来的子控件,也就是由这些控件构成了整个
CEGUI,其中包括有基本的控件:按钮、文字、图片、编辑框等;也有较复杂的复合控件:
剩余17页未读,继续阅读
资源评论
- lingjing22442012-08-11一直对游戏编程感兴趣,准备好好学学
- dongprogrammer2012-08-15东西不错 需要细心掌握
Little_old_M
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
- 基于python实现的三次样条插值和均值插值法实现
- Python语言教程2-python批量图片大小处理-多文件夹
- Python语言教程1-python批量图片重命名,将后缀某几个不想要的字去除
- Space Combat Kit 太空战斗套件Unity游戏开发插件资源unitypackage C#
- Universal Device Preview 通用设备预览Unity游戏开发插件资源unitypackage
- Paladin Anim Set 圣骑士动画集Unity游戏动作动画插件资源unitypackage
- 计算机财务管理期末考报表部分题目及答案.doc
- 计算机软件维护论文.doc
- 计算机软件著作权授权书.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功