gpt4 book ai didi

opengl - 我使用多少个 VBO?

转载 作者:行者123 更新时间:2023-12-04 03:01:58 27 4
gpt4 key购买 nike

所以我了解如何使用顶点缓冲区对象,并且它比立即模式绘图提供了很大的性能提升。我将绘制很多 2D 四边形( Sprite ),我想知道我是否应该为每个四边形创建一个 VBO,或者创建一个 VBO 来保存所有数据?

最佳答案

您不应该为每个 Sprite /四边形使用新的 VBO。因此,在您的情况下,将它们全部放在一个 VBO 中将是更好的解决方案。

但总的来说,我认为这不能用一句话来回答。

为每个 Quad 创建一个新的 VBO 不会给你带来真正的性能提升。如果这样做,会浪费很多时间 glBindBuffer要求切换 VBO。但是,如果您创建包含过多数据的 VBO,您可能会遇到其他问题。

小型 VBO:

  • 在您的程序代码中通常更容易处理。您可以为您渲染的每个对象使用一个新的 VBO。通过这种方式,您可以在您的世界中轻松管理您的对象
  • 如果 VBO 太小(只有几个三角形),您将不会获得太多好处。在缓冲区之间切换缓冲区(以及可能切换着色器/纹理)会浪费很多时间

  • 大型 VBO:
  • 您可以使用单个 drawArrays() 渲染大量对象要求最佳性能。
  • 根据您的数据,您可能会在单个 VBO 中管理大量对象产生开销(如果您想移动这些对象中的一个并旋转另一个对象怎么办?)。
  • 如果您的 VBO 太大,则可能无法将它们移入 VRAM

  • 以下链接可以帮助您:

    Vertex Specification Best Practices

    关于opengl - 我使用多少个 VBO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661629/

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