gpt4 book ai didi

opengl - 改进粒子系统OpenGL

转载 作者:行者123 更新时间:2023-12-05 00:03:35 25 4
gpt4 key购买 nike

我正在寻找一种方法来提高我的粒子系统性能,因为它在 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);
}

最佳答案

你描述它的方式,听起来你对每个粒子都有自己的 VBO。这不是应该做的。将所有粒子放入一个 VBO 并使用单个 glDrawElements 一次性绘制所有粒子或 glDrawArrays称呼。或者甚至更好,如果有的话:使用实例化。

关于opengl - 改进粒子系统OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com