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