cegui 0.7 渲染改动

本文详细介绍了CEGUI 0.7版本中的渲染优化技术,特别是GeometryBuffer和RenderingSurface的使用,以及如何通过这些改进来提高渲染效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值