performance - XNA 粒子系统性能

标签 performance xna frame-rate particles

我有一个使用基本 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/

相关文章:

ruby - Ruby 中数组和哈希的性能

c# - 导入效果错误

c# - 洪水填充算法无限循环

javascript - p5.j​​s sketch 在移动设备上非常慢

image - 如何使输出 gif 与 ffmpeg 中的输入 gif 长度相同

php - 使用 PHP ping 数千个网站的最快方法

c# - x64 与 x86 性能考虑因素.Net

c++ - 可扩展的 UDP 服务器

c# - XNA 按字符串设置颜色

javascript - 尝试使用 getUserMedia 帧速率约束