CCParticleBatchNode: 粒子批处理节点,与CCSpriteBatchNode 类似,通过将使用了同样的Texture的粒子加入到TextureAtlas中,然后,在一次渲染中,渲染所有的粒子,从而达到提高效率的目的。
CCParticleSystem: 粒子系统类,不过只是一个基类,并不完善。
CCParticleSystemQuad:粒子系统矩形类,实现CCParticleSystem的虚函数,postStep、updateQuadWithParticle、setTotalParticles和draw函数。
postStep完成不使用BatchNode时的VBO的更新,该类可以在不使用BatchNode的情况下,自己完成粒子的渲染。
产生出特定的粒子系统: 通过从CCParticleSystemQuad派生子类,并重写初始化函数,即可完成特定的粒子系统。
支持两种发射器,一种是重力发射器,一种是环形发射器。
粒子的运动分为三种,自由模式、相对模式和集群模式。
粒子系统中,添加和删除粒子的代码非常有趣。 它使用了一个一维数组管理所有的粒子,当然,长度在最开始的时候就是确定的。
每当删除一个粒子时,直接用最后一个粒子的数据覆盖该粒子的数据,同时粒子总数减1,则完成删除。
添加一个粒子时,则是将粒子系统最后一个粒子的下一个粒子作为新的粒子初始化,并粒子总数加一,则完成添加。
粒子分布如下,
这样的分配方式,避免了对于粒子的频繁删除和释放,很聪明的做法。