- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一 CEGUI渲染入门
不管你用的是什么引擎,至少要做如下所示最基础的三步,才能使CEGUI运行起来。
1. 创建 CEGUI::Renderer 对象。
2. 创建 CEGUI::System 对象。
3. 调用渲染函数。
当然,真正实现游戏GUI,你还需要装载相关的数据文件、进行一些最基础的初始化(这在 装载数据文件和初始化入门 一文中进行讲解),你也需要处理用户输入(这在 输入处理入门 一文中进行讲解)。
1. 创建 CEGUI::Renderer 对象
这一步相当直观,对于所支持的渲染组件(比如:Direct 3D9, OpenGL, Ogre3D等),这步应该没有问题。当然,要记得包含所使用渲染组件的头文件。还有,Ogre3D现在已经将它的渲染组件改为Ogre而不是CEGUI。(切记:在程序结束的时候,要删除此Renderder对象)
创建 CEGUI::Renderer 对象代码如下:
Ogre3D :
CEGUI::OgreCEGUIRenderer* myRenderer =
new CEGUI::OgreCEGUIRenderer( myRenderWindow );
2. 创建 CEGUI::System 对象来对系统进行初始化
这一步更简单。只需new一个CEGUI::System对象,并把刚创建的CEGUI::Renderer对象的指针传送给它即可。这时整个系统将自动初始化。
new CEGUI::System( myRenderer );
3. 调用渲染函数
这一步有点特殊,所使用的引擎不同,此步的代码也会不同。不过,说白了,你所要做的只是在每帧渲染后调用CEGUI::System::renderGUI而已。使用Ogre3D的同学该高兴了,因为它将由Ogre3D自动完成。
二 资源管理入门
如果你已经读了 CEGUI渲染入门 这篇文章,你已经知道:要想让CEGUI跑起来,至少要对CEGUI进行最基础的初始化,并调用System::renderGUI方法,这看起来很不错。可是,你仍然不能让程序画任何东西!
为了达到胜利的彼岸,下一步是设置资源管理器组(resource provider groups),我们将用它们装载一些文件供CEGUI在渲染的时候使用。
ResourceProvider 是什么?
CEGUI使用了一个工具对象,我们叫它“ResourceProvider”。此对象提供了一组接口负责CEGUI与其他的文件装载系统通信。
例如: Ogre 和 Irrlicht 都有它们自己的资源管理/文件装载子系统,通过实现特定的 ResourceProvider 对象,CEGUI 的渲染模块就可以和那些子系统无缝的组合起来。那样,CEGUI 的数据文件就可以通过那些子系统装载了。但是,更底层的库(Direct3D 和 OpenGL)没有那样的资源管理系统,所以,CEGUI 为它们提供了默认资源管理系统(default resource provider)。
DefaultResourceProvider 相关说明
CEGUI::DefaultResourceProvider ---- CEGUI 的默认资源管理系统,是为那些目前还没有的库提供基础帮助的系统。它不仅提供了 CEGUI 装载文件、数据时所需的函数,而且对“资源组(resource groups)”也提供了初步的支持。这里的“资源组”其实是一个标签,它代表系统的某个文件夹路径。这就使得我们可以将文件夹中的文件按其逻辑类型进行分组,然后可以通过一个简单的标签而不是硬编码的路径去指定它。也就是说:当数据文件的路径有改动的时候,只需更新资源组的路径而不必更改代码和XML文件中的路径信息。
指定资源组和路径
DefaultResourceProvider 允许你定义任意数目的资源组,并为每个资源组指定一个路径。也就是说:你可以创建一个资源组,比如“imagesets”,并为它指定一个路径,假设是“./mygame/datafiles/gui/imagesets/”。然后,当你通过ImagesetManager装载Imageset的时候,就可以指定“imagesets”为它将要使用的资源组,这样,系统就会在预定义的路径中寻找资源。目前,每个资源组只能被赋予一个路径。
下面给一个小例子来说明。以前,在没用资源组的时候,你可能这么做:
Imageset* wlis = ImagesetManager::getSingleton().createImageset(
./mygame/datafiles/gui/imagesets/WindowsLook.ima
文档评论(0)