多个缓冲对象与单个大型手动管理对象?

时间:2013-08-14 10:38:20

标签: opengl

我有大量数据块(数百到数千),大小相同(几kb),以不可预测的方式频繁加载和卸载(取决于相机的移动)。

我想知道是否最好,性能和/或资源方面,分配一个大缓冲区,并为每个加载的块动态保留部分缓冲区,而不是为每个块分配一个缓冲区对象? 换句话说,当你可以将它们组合成一个(有一些工作)时,有很多单独的缓冲区对象是不是很糟糕吗?

1 个答案:

答案 0 :(得分:0)

真正的问题不是VBO的数量,而是内容的大小(它不应该太小)并重新分配VBO。在您的特定情况下,您经常更新具有少量内存池的数据VBO通常更好,然后将每个数据块放入其自己的VBO中。

  

以不可预测的方式频繁装载和卸载(取决于相机的移动)

你不应该这样做。我的意思是使用视图来决定什么是加载而不是什么。只需加载VBO中当前可能需要的所有内容,并在实际需要时引用它。但是,不要在每个小时间步骤中对每个数据进行微观管理。当你知道,那些肯定不会再出现的东西,然后卸载它。如果某些事情可能会在稍后出现,那么请尽早加载。

您不必绘制VBO中包含的所有内容。