cegui图片文字写屏

来源:互联网 发布:西安交大图书馆网络 编辑:程序博客网 时间:2024/04/29 01:58

在cegui中, 文字和图片的表现方式一般是以窗口的形式呈现的. 这本主要针对0.7.0以上版本的CEGUI实现文字或图片直接写屏(指的是不用画在窗口上).
这个技术在cegui dome上已经有过展现, 看到每个dome左下方那个会旋转的GUI纹理了吗, 它就是利用GeometryBuffer类进行纹理直接写屏的. 下面就来讲一下如何实现这个效果吧.
1.创建GeometryBuffer的一个对象, 相关代码:
CEGUI::OgreRenderer* pOgrerender;
GeometryBuffer* pGeometryEffect = pOgrerender->createGeometryBuffer();
pOgrerender需要在渲染系统初始化时指向实例对象.
2.设置显示的区间
实例代码: pGeometryEffect->setClippingRegion(CEGUI::Rect(0, 0, 100, 100));
3.设置渲染函数
pOgrerender->getDefaultRenderingRoot().subscribeEvent(CEGUI::RenderingSurface::EventRenderQueueStarted,
CEGUI::Event::Subscriber(&GeometryEffect::overlayHandler, this));
这一句必须在GeometryEffect(自己定义的类)的某个成员函数里写, 并且在GeometryEffect::overlayHandler必须调用pGeometryEffect->draw();才能显示相应的东西. 具体原因有待研究
4.渲染对象
调用CEGUI::Image::draw(), CEGUI::Font::drawText()第一参数里要填写pGeometryEffect,其它参数就不作多的解释了
这个draw不需要在游戏每帧更新时都draw一次, 只要调用一回就可以显示你要的东西了。如果要draw新的东西,最好调用GeometryBuffer::reset()一下.
5.旋转
如果想旋转绘制的东西首先要设置旋转的中心轴:调用pGeometryEffect->setPivot(Vector3((x, y,z));就好了
接着调用pGeometryEffect->setRotation(Vector3(x, y, z));就可以完成旋转的功能了
转载或修改请说明出处
作者:howlet
E-Mial:
howlet3@126.com
3d游戏技术交流群:108546670

原创粉丝点击