我正在编写物理引擎,并且很难找到设计数据存储的好方法.
我想要的功能:
现在我基本上有两个循环.一个更新模拟中的物理实体.它会更新它们的位置/速度/旋转.第二个循环对所有碰撞体积执行碰撞检测.它只是一个嵌套的for循环,用于检查每对碰撞体积之间的碰撞.(我知道它可以做得更好,但这是一个单独的主题)
我知道理想的方法是将对象存储在连续的数组中.
std::vector<PhysicsBody> m_bodies;
std::vector<CollisionVolume> m_colliders;
Run Code Online (Sandbox Code Playgroud)
我用这种方法发现的问题:
我努力寻找解决方法,但最终存储了指针:
std::vector<PhysicsBody*> m_bodies;
std::vector<CollisionVolume*> m_colliders;
Run Code Online (Sandbox Code Playgroud)
我想出的最小化缓存未命中的最佳解决方案是重载新/删除并将这些对象存储在内存池中,仅用于物理系统.
还有其他更好的解决方案吗?显然,表现是关键.
c++ performance memory-management game-physics data-oriented-design
我有一个C++程序,它连续从kinect传感器(usung opencv)获取深度帧并将它们保存到png.我有另一个MATLAB脚本来读取这些图像并处理它们.
问题是MATLAB无法读取png,因为C++程序可能比MATLAB读取文件更快地覆盖文件.我想如果图像写入和读取可以同步,问题就可以解决了.
有什么可能是实现这一目标的最简单方法?只要解决方案有效,我愿意接受一些性能提升.