我有一个使用基本 spritebatch 的粒子系统,其中粒子是根据直到 0 的递减 alpha 值创建和销毁的。
该系统在 pc 上的性能很差,在 xbox 上也很差,在 fps 显着降低之前屏幕上有大约一百个粒子,我已经阅读了有关如何提高性能的信息,但有没有人有任何提示如何实现它们,例如最好的方法是什么 - 重用粒子而不是 kill()?每个粒子的图像大小是否有所不同?如果我不旋转每个粒子,这会有帮助吗?
我已经尝试过这些建议中的每一个,但没有得到任何显着的改进 - 有没有人有任何建议 - 是否值得使用 gpu 而不是基于 cpu?
最佳答案
据我所知,破坏和创建粒子会大大降低性能。 您可能想要重复使用粒子。
不确定图像大小或旋转是否会显着降低性能,只要图像不是很大。
我会有一个阵列,其中将死粒子交换到 active 粒子的末尾,因此只处理 active 粒子。
例如:
Make an array of MAX particles; When you need a particle grab particle_array[count]; Increment count. When a particle dies, decrement count, swap the particle with particle_array[count]; Update only count particles;
希望这对您有所帮助。
关于performance - XNA 粒子系统性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165460/