我正在寻找一种提高粒子系统性能的方法,因为它在FPS方面非常昂贵。 这是因为我调用了:
glDrawElements(GL_TRIANGLE_STRIP, mNumberOfIndices,
GL_UNSIGNED_SHORT, 0);
我在我的应用程序中为每个粒子调用此方法(可能在1000到5000个粒子之间)。请注意,当粒子数量增加到1000以上时,我的应用程序开始下降FPS。我正在使用VBO:s,但是调用此方法的性能太昂贵了。
有什么想法可以使粒子系统更有效?
编辑:这是我的粒子系统绘制事物的方式:
glBindTexture(GL_TEXTURE_2D, textureObject);
glBindBuffer(GL_ARRAY_BUFFER, vboVertexBuffer[0]);
glVertexPointer(3, GL_FLOAT, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, vboTextureBuffer[0]);
glTexCoordPointer(2, GL_FLOAT, 0, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboIndexBuffer[0]);
Vector3f partPos;
for (int i = 0; i < m_numParticles; i++) {
partPos = m_particleList[i].m_pos;
glTranslatef(partPos.x, partPos.y, partPos.z);
glDrawElements(GL_TRIANGLE_STRIP, mNumberOfIndices,
GL_UNSIGNED_SHORT, 0);
gl.glTranslatef(-partPos.x, -partPos.y, -partPos.z);
}