我正在用C++语言编写一个小型粒子系统,但不确定如何管理与粒子相关的数据-是将其存储在静态或动态数组中,在链表中,还是两者的某种混合,或者可能考虑到?

目前,我不想做出选择,而是想使用一个抽象类进行内存管理,该类一方面为我提供了分配和释放例程,另一方面又为我提供的资源进行了分配。它的破坏者。我希望以此方式可以快速透明地在不同的粒子管理策略之间进行切换和测试。

1)这是合理的做法吗?

2)如果是:是否有任何提供此类功能的库?

谢谢你的帮助!

最佳答案

对于粒子系统,您可能希望考虑为每个粒子的每个坐标,速度,颜色通道等使用一个std::vector。例如

std::vector<float> x(100);
std::vector<float> vx(100);
etc

代替
std::vector<Particle> p(100)

这被称为SOA(阵列结构),而不是AOS(结构阵列)。前者更适合矢量化。

10-07 12:09
查看更多