一直想用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。