gpt4 book ai didi

OpenGL。使用 glBufferData 更新顶点缓冲区

转载 作者:行者123 更新时间:2023-12-03 14:51:29 36 4
gpt4 key购买 nike

我正在使用 OpenGL实现某种批量绘图。为此,我创建了一个 vertex buffer来存储数据。

注意:这个缓冲区通常会在每一帧上更新,但永远不会减少大小(但仍然可以增加)。

我的问题是:使用 glBufferData 在技术上是否正确? (使用 s treaming write-only mode )来更新它(而不是例如 glMapBuffer )?我想没有必要映射它,因为完整的数据已经更新,所以我一次发送一个完整的包。如果当前缓冲区大小小于我发送的大小,它会自动增加,不是吗?我现在才确定它真正工作的方式(也许它会在每次调用时重新创建缓冲区,不是吗?)。

最佳答案

最好有固定大小的缓冲区并且不要每帧都重新创建它。

您可以通过以下方式实现:

  • 创建最大大小的缓冲区,例如 1000 个顶点的空间
  • 仅用新数据更新缓冲区的开头。因此,如果您更改了 500 个顶点的数据,则使用 glMapBuffer
  • 填充缓冲区的前半部分。
  • 绘制时更改绘制顶点的数量。例如,您可以仅使用整个 1000 个顶点缓冲区中的某个顶点范围(例如,从 200 到 500)。使用 glDrawArrays(mode, first, count)

  • 来自评论的想法:
  • glMapBufferRange 和 glBufferSubData 也可以提供帮助
  • 还要考虑缓冲区的双缓冲

  • 链接: http://hacksoflife.blogspot.com/2010/02/double-buffering-vbos.html

    希望有帮助

    关于OpenGL。使用 glBufferData 更新顶点缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155615/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com