xiaoxiaoling

C++博客 首页 新随笔 联系 聚合 管理
  17 Posts :: 2 Stories :: 9 Comments :: 0 Trackbacks

一直想用cegui,但是没机会用,只是抽空看其代码

最近听朋友说0.7 debug下帧数提高100多,挺惊讶的,重新到久违了的官网上下了0.7.1

看了下渲染的实现(GL)

首先,添加了GeometryBuffer玩意,使得每个window保存了属于自己的顶点和纹理信息

然后在RenderingSurface中有GeometryBuffer队列,使得每个拥有AutoRenderingSurface属性的window有属于自己的队列(默认只有FrameWindow才有)

而在drawself中执行的则是先通过looknfeel,把需要渲染的信息丢到每个部件自己的GeometryBuffer里,然后把GeometryBuffer丢到RenderingSurface的队列中(一般为

FrameWindow的GeometryBuffer队列,每个面板就有自己的渲染队列了)

要知道以往都是只有一个队列的,要渲染啥直接往里塞。 。 。
这样一改就不必每个小部件有更改都要全部重新清空渲染了


再往后就是把每个窗口队列里的GeometryBuffer渲染到各自的RenderingSurface表面上,这里要注意的是并不是渲染到屏幕上而是表面上,cegui在这里使用了渲染到纹理,GL

用的是fbo实现的。

注意RenderingSurface只有两个来源,一是通过设置AutoRenderingSurface属性,另一个就是RenderingRoot了,RenderingRoot只有一个,在render中,通过第一个来源的使

用的是fbo的渲染,而第二个来源则直接渲染到屏幕了。

所有的这些执行完后就可以渲染到屏幕了,通过RenderingRoot执行,注意这里的RenderingRoot中的RenderTarget和之前的不一样,这里用的是OpenGLViewportTarget而不是

OpenGLFBOTextureTarget。

posted on 2010-04-27 20:56 clcl 阅读(1140) 评论(2)  编辑 收藏 引用

Feedback

# re: cegui 0.7 渲染改动 2010-04-27 21:37 Davy.xu
顶了,回去试试  回复  更多评论
  

# re: cegui 0.7 渲染改动 2010-04-27 23:47 吴生
不错,顶下  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理