ORGE之GUI Demo

在以前的笔记中已经对 CEGUI 的使用做了简单的介绍,这里为了完整性还是把它 C & P 一下:
使用 cegui 来制作界面 , 不论在何种平台下 , 有基本的三大步骤要做 :
1, 创建一个 CEGUI::Render 实例
2, 创建 CEGUI::System 对象
3, 调用各种方法来渲染用户界面
第一步 , 在我使用的 ogre 环境下使用以下代码来创建 CEGUI::Render 实例
Ogre3D
CEGUI::OgreCEGUIRenderer* myRenderer =
       new CEGUI::OgreCEGUIRenderer(myRenderWindow);
第二步相当简单 , 可使用 new CEGUI::System(myRenderer);
第三步,基本上来讲,大部分平台下,如 direct3D, OpenGL, 我们在渲染循环的尾部调用 CEGUI::System::renderGUI 来开始界面的渲染。如果我们使用 ogre3d 引擎,这一步不需要 我们显示的执行。 创建 CEGUI 窗口,我们可以使用两种形式,一是 C ++代码,二是编辑 XML layout 文件。
CEGUI 本身侦测用户输入,这些不是 CEGUI 的责任,而是程序的员的责任。当有用户外部输入时,我 们可以选择将这些消息告知 CEGUI ,这样 CEGUI 才会响应。
CEGUI 使用回调机制来进行消息处理。可以为某个窗体的特定事件注册一个函数,当窗体事件发生时, CEGUI 会自动调用所注册的函数。
DEMO 中需要注意的是 Render To Texture 的实现。
先创建在 ogre 中的 RTT:
RenderTexture * rttTex = mRoot->getRenderSystem()->createRenderTexture( "RttTex", 512, 512, TEX_
TYPE_2D , PF_R8G8B8 );
再转换成CEGUI可识别的:
// Retrieve CEGUI texture for the RTT
        CEGUI::Texture* rttTexture = mGUIRenderer->createTexture((CEGUI::utf8*)"RttTex");
根据这个Texture生成了一个ImageSet;
在ImageSet中定义了一个Image(名为RttImage);其大小与上边的Texutre同样大小。
当在窗口中增加一个static Image时,把其image属性设为 ” RttImage ” 即可。

posted @ 2009-08-10 16:23  回忆1919  阅读(881)  评论(0编辑  收藏  举报