现在的位置: 首页 > 综合 > 正文

效率。。。OverlayElement。。。

2013年05月26日 ⁄ 综合 ⁄ 共 738字 ⁄ 字号 评论关闭

      这段时间我继续在OEGUI现有基础上实现了一个RenderBox,这个RenderBox实现了渲染到纹理的效果,可以用来显示模型、画中画等一些特殊效果。但是很遗憾的是,我同时也发现,OEGUI的渲染效率实在是太低了。。这个是在我做了一个显示FPS的辅助窗口后发现的。随着组件的增加,渲染的batch也随着增加,直接导致渲染的效率低下。

      按照一般来说,ogre应该把所有的renderable按照pass归类,然后一次性渲染,也就是说假如有不同的物体使用相同的材质,渲染的批次不应该增加。但是对OverlayElement来说,不是这样。事实上,一个TextAreaOverlayElement等于一个batch,一个PanelOverlayElement等于一个batch,一个BorderPanelOverlayElement等于2个batch!这个真的是个很夸张的数字。。。因为这意味这GUI用的越多,效率越低。。。关于这个问题大家也可以运行Ogre的sample看看效果。尤其是那些下拉菜单,跳出下拉单的时候,你会发现fps会有个明显下降并且batch会有个很大提升。我一直很奇怪为什么1.7的sample运行fps明显没1.6高,现在看来找到原因了。。。

       说到效率,不得不提下mygui。这个gui的源代码真的很难看,不过貌似他渲染使用的是ogre比较底层的接口,没有使用Ogre的一般流程。他的效率很让人不可思议,在前几个比较简单的demo中,他GUI的渲染batch居然是0。。不明白他是怎么实现的。。

       今后我打算抽点时间出来提高下OEGUI的效率问题,不过不一定有时间了。

       RenderBox的代码抽空会放上来的。

抱歉!评论已关闭.