多个缓冲区并调用glBufferSubData

最初在计算机graphics学上提出这个问题,但在这里可能会更好。

在我的项目中,为了方便,我想使用许多缓冲区。 在我的情况下,许多缓冲区意味着50-100地形块由caching具有顶点坐标,法线,指数和颜色。 数据的大小将是,比方说每个缓冲区10 ^ 4个浮点数 。 这些数据中的一些可以在每个地形补丁f.ex之间共享。 xz坐标和索引。

在渲染循环中,一些地形补丁将被更新。 这意味着对于某些缓冲区,我调用整个缓冲区的glBufferSubData()

我的问题是 这两种方法之间有什么优点/缺点,performance明智:

1)控制我的数据在许多缓冲区(50-100),因此让我需要时调用glBufferSubData在一个完整的缓冲区。

2)在更less的(5-20​​)缓冲区中控制我的数据,每个缓冲区都有更多的数据。 但是,然后必须建立一个系统,我需要在缓冲区的较小部分调用glBufferSubData 。 (这导致了我的情况下更复杂的devise)。

减less缓冲区通常是更好的性能,因为它避免了驱动程序的开销。 接近零驱动程序开销技术使用程序自行管理的非常大的缓冲区。

管理缓冲区小部分的系统不应太复杂。 Fo每个部分,你只需要一个偏移量和大小。