0.序
对于使用ParticleUniverse制作的Ogre游戏来说,特效效率问题是很严峻的。很久没有发文章了,这里将结合我最近遇到的问题简单分享一下我面对的问题以及我个人的解决思路。
1. 引子,关于ParticleUnverse的visual particle quota
PU自带了这个参数,他的本意是限制一定的可见粒子数来方便在粒子池中处理循环粒子,避免过多的创建和删除的操作。而我们实际运用中针对PU所做的特效编辑器虽然给出了这一参数,但是没有与美术制作人员事先强调这个值的作用,因此他们在制作过程中没有对这个参数进行一定的重视,一直使用的是PU默认的值500(这个太多了。。)。等真效率有问题时我特意测试了一下,对于公告板粒子系统来说,quota设置太大是没什么影响的,因为ogre自己就有BB的pool,太多的数量只会导致内存占用。不过对于PU另外支持的Entity等渲染器来说,如果quota设置过大会直接导致sceneNode创建过多,严重影响性能。
OGRE根据sceneNode机制来控制待渲染物体添加到渲染队列中,太多的sceneNode首先会进行多余的场景管理裁剪,而且无论他所attach的movableObject是否visible,都会在addRenderqueue后调用receiveShadow(大致是这个)函数,整套流程也是很卡的。大家