Tag: particle system

如何在iPhone OpenGL ES粒子系统中绘制1000多个粒子(具有独特的旋转,缩放和alpha)而不会减慢游戏速度?

我正在开发一个使用OpenGL ES 1.1的iPhone游戏。 在这个游戏中,我会有一些血液粒子在被射击时从angular色中散发出来,所以在任何时候屏幕上都会有1000多个血液粒子。 问题是,当我有超过500个粒子渲染,游戏的帧速率下降非常大。 目前,每个粒子使用glDrawArrays(..)渲染自己,我知道这是造成速度减慢的原因。 所有的粒子共享相同的纹理地图集。 那么减less绘制多个粒子的速度最好的select是什么? 以下是我find的选项: 将所有的血液粒子组合在一起,并使用一个单一的glDrawArrays(..)调用渲染 – 如果我使用这种方法,有没有办法让每个粒子有自己的旋转和alpha? 或者当这个方法被使用时,他们都必须有相同的旋转? 如果我无法渲染具有独特旋转的粒子,那么我不能使用这个选项。 在OpenGL ES 2.0中使用点精灵。 我没有使用OpenGL ES 2.0,但我需要满足一个截止date,我已经在App Store上发布了我的游戏。 要使用OpenGL ES需要进行初步的研究,不幸的是我没有时间去执行。 在稍后的版本中,我将升级到OpenGL ES 2.0,但首先我只想使用1.1。 这里是每个粒子渲染本身。 这是我最初的粒子渲染方法,它使得游戏在渲染了500多个粒子之后经历了帧速率的显着下降。 // original method: each particle renders itself. // slow when many particles must be rendered [[AtlasLibrary sharedAtlasLibrary] ensureContainingTextureAtlasIsBoundInOpenGLES:self.containingAtlasKey]; glPushMatrix(); // translate glTranslatef(translation.x, translation.y, translation.z); // rotate glRotatef(rotation.x, […]