3

我正在寻找更智能的算法来处理 OpenGL 中的 VBO。

就目前而言,我目前将每个模型存储在 4MB VBO 中。如果模型大于 4MB,则单独存储。对象的存储使得模型汇集在一起​​,以减少绑定的数量。

我遇到的问题是如何清理未使用的 VBO,这些 VBO 仅使用很少。任何有关我如何更好地管理这些内存池的资源都值得赞赏。

4

2 回答 2

1

VBO 不像普通内存,不需要任何复杂的“内存管理”。您为每个不同的网格分配一个自己的、适当大小的 VBO 并完成。任何比驾驶员更聪明的尝试只会导致性能下降。

尝试使您的 VBO 尽可能大也没有任何好处。事实上,根据我的经验,大约 0.5k 到 5k 顶点的中等大小的 VBO 效果最好。

于 2011-05-08T23:00:43.197 回答
1

我本来也有你这样的。我用大约 100 行代码实现了一个简单的 freelist,以便可以重用释放的 VBO 段。它显着减少了给我带来框架故障的 VBO 重新分配。我使用了最佳拟合算法进行分配,因为我有许多网格,它们恰好具有相同数量的顶点和面。

于 2011-05-08T23:47:32.073 回答