我有大量相同大小(几kb)的数据块(数百到数千),它们以不可预测的方式频繁加载和卸载(取决于相机的移动)。
我想知道是否最好,性能和/或资源明智,分配一个大缓冲区,并为每个加载的块动态保留部分缓冲区,而不是为每个块分配一个缓冲区对象?换句话说,当您可以将它们组合成一个(通过一些工作)时,拥有很多单独的缓冲区对象是不是很糟糕?
我有大量相同大小(几kb)的数据块(数百到数千),它们以不可预测的方式频繁加载和卸载(取决于相机的移动)。
我想知道是否最好,性能和/或资源明智,分配一个大缓冲区,并为每个加载的块动态保留部分缓冲区,而不是为每个块分配一个缓冲区对象?换句话说,当您可以将它们组合成一个(通过一些工作)时,拥有很多单独的缓冲区对象是不是很糟糕?
真正的问题不是 VBO 的数量,而是内容有多大(不应该太小)和重新分配 VBO。在您的特定情况下,您经常更新具有少量内存池 VBO 的数据通常会更好,然后将每个数据块放入其自己的 VBO。
以不可预知的方式频繁加载和卸载(取决于相机的移动)
你不应该那样做。我的意思是使用视图来决定加载什么和不加载什么。只需在 VBO 中加载您目前可能需要的所有内容,并在实际需要时引用它。但是,不要在每个小时间步对每一条数据进行微观管理。当您知道某些东西绝对不会再出现时,请卸载它。如果某些东西可能会在一段时间后出现,那么请尽早加载。
您不必绘制 VBO 中包含的所有内容。