我正在用 C++ 编写一个小型粒子系统,但不确定应该如何管理粒子相关数据 - 应该将其存储在静态或动态数组中、链接列表中、两者的某种混合中,还是其他什么还有人可能会想到吗?
目前我不想做出选择,但宁愿使用抽象类进行内存管理,一方面为我提供分配和释放例程,另一方面负责释放内存在其析构函数中提供资源。我希望通过这种方式,我可以快速、透明地在不同的粒子管理策略之间进行切换和测试。
1)这是合理的做法吗?
2)如果是:是否有任何库提供此类功能?
感谢您的帮助!
最佳答案
对于粒子系统,您可能希望考虑对每个粒子的每个坐标、速度、颜色 channel 等使用一个 std::vector
。例如
std::vector<float> x(100);
std::vector<float> vx(100);
etc
而不是
std::vector<Particle> p(100)
这称为 SOA(数组结构)而不是 AOS(结构数组)。前者更适合矢量化。
关于c++ - 内存管理接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318036/