内存池算法
Memory pool algorithms
我正在寻找更智能的算法来处理OpenGL中的VBO。
就目前而言,我目前将我的每个模型存储在4MB VBO中。如果模型大于 4MB,则单独存储。存储对象时,模型将池化在一起以减少绑定数。
我遇到的问题是如何清理未使用的 VBO,这些 VBO 仅使用很少使用。感谢有关如何更好地管理这些内存池的任何资源。
VBO 不像常规内存,不需要任何复杂的"内存管理"。您可以为每个不同的网格分配一个自己的、适当大小的 VBO,然后完成操作。任何智胜驾驶员的尝试都只会导致性能下降。
尝试使您的 VBO 尽可能大也没有任何好处。事实上,根据我的经验,大约 0.5k 到 5k 顶点的适度大小的 VBO 效果最好。
我最初有像你一样的东西。 我在大约 100 行代码中实现了一个简单的自由列表,以便可以重用释放的 VBO 段。 它大大减少了 VBO 重新分配,这给了我帧故障。 我使用最佳拟合算法进行分配,因为我有许多网格恰好具有相同数量的顶点和面。
相关文章:
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 迭代算法之前的高效内存分配
- std::stable_sort: 如何选择内存优化算法而不是时间优化算法?
- 图上的深度优先搜索算法中的内存泄漏
- 运行实验的好方法是C 中算法的内存使用情况
- 用于查找范围重叠的更节省内存的算法
- 编译哈希算法时出现内存访问冲突错误
- Dijkstra算法:内存消耗
- 在C/C 中实现实时最佳拟合内存分配算法
- 对共享内存使用免锁算法
- 启动/停止排序算法的C++矢量内存错误
- 低内存最短路径算法
- 为什么"% for loops"与求和算法相比内存成本相对较高?
- 在从算法stl c++进行排序时访问未分配的内存
- 为遗传算法分配和检索逐位内存值
- c++算法的python包装器内存泄漏
- 何时删除卡拉苏巴算法中分配的内存?
- 内存池算法
- 需要优化 - 算法实现占用太多内存
- c++尝试添加Peterson算法以避免共享内存中的竞争条件