我正在寻找更智能的算法来处理OpenGL中的VBO。
目前,我将每个模型存储在4MB的VBO中,如果模型大于4MB,则将其单独存储。存储对象,以便将模型汇集在一起,以减少绑定的数量。
我遇到的问题是如何清理未使用的VBO,这些VBO使用的很少。任何关于我如何更好地管理这些内存池的资源都将不胜感激。
发布于 2011-05-09 07:00:43
VBO不像常规内存,不需要任何复杂的“内存管理”。你分配一个自己的,适当大小的VBO为每个不同的网格,并完成。任何试图智胜司机的尝试都只会导致较差的性能。
此外,尝试使您的VBO尽可能大也没有好处。事实上,根据我的经验,大约0.5k到5k个顶点的中等大小的VBO效果最好。
发布于 2011-05-09 07:47:32
我原本有和你一样的东西。我在大约100行代码中实现了一个简单的freelist,以便释放的VBO段可以重用。它显着减少了VBO的重新分配,这给我带来了帧故障。我使用最佳匹配算法进行分配,因为我有许多恰好具有相同数量的顶点和面的网格。
https://stackoverflow.com/questions/5929862
复制相似问题