1

我发现将这些元素保存在单独的缓冲区中会更干净、更容易,但我想知道将它们全部放在一个大缓冲区中是否会更好。

4

3 回答 3

6

使用多个缓冲区的优点是您可以轻松地为某些特殊渲染禁用一个(例如,仅深度不需要法线或纹理坐标)。

但是,将所有属性交错存储在一个数组中可以在渲染时提供更好的缓存局部性。

于 2012-09-03T10:09:27.147 回答
4

我们正在谈论数组结构或结构数组及其效率。在大多数情况下,结构数组更有效,因为它可以更好地利用处理器缓存,但这假设您将按照它们在内存中的顺序访问数据。

但是,如果您的某些数据以与其他数据不同的速率刷新,则将它们放在不同的缓冲区中会很有好处,这样您就可以只更新需要更新的数据。

于 2012-09-03T10:13:19.653 回答
3

根据OpenGL 维基

如果您使用单独的 VBO,您不会损失太多性能。它大约为 5%,但您的测试可能会显示其他结果。

我不知道此语句是否仅适用于动态数据,但在我的引擎中我使用单独的 VBO。

于 2012-09-03T10:10:59.737 回答