gpt4 book ai didi

webgl - 使用单个顶点缓冲区还是多个?

转载 作者:行者123 更新时间:2023-12-01 11:36:32 28 4
gpt4 key购买 nike

我正在实现一个包含许多不同尺寸的独立矩形游戏 block 的 2D 游戏。每件作品的尺寸在帧之间不会改变。大多数片段将显示图像并共享相同的片段着色器。我是 WebGL 的新手,我不清楚在这种情况下管理顶点缓冲区的最佳策略是什么。

使用单个顶点缓冲区(四边形)来表示所有游戏片段,然后在每个片段的顶点着色器中重新缩放这些顶点是否更好?或者,我应该为每个部分定义一个单独的静态顶点缓冲区吗?

最佳答案

GPU 是一个状态机,切换状态的成本很高(通过 WebGL 完成时更是如此,因为 WebGL 实现引入了额外的检查层),因此绑定(bind)顶点缓冲区的成本很高。

将 API 调用减少到最低限度是一种很好的做法。

即使有多个不同的对象,您仍然希望使用单个顶点缓冲区并使用 drawArrays 的偏移参数。或 drawElements方法。

以下是按成本递减排序的 API 调用列表(顶部是最昂贵的):

  • 帧缓冲
  • 程序
  • 纹理绑定(bind)
  • 顶点格式
  • 顶点绑定(bind)
  • 统一更新

  • 有关这方面的更多信息,您可以观看这篇精彩的演讲 Beyond Porting: How Modern OpenGL can Radically Reduce Driver Overhead由 Cass Everitt 和 John McDonald 撰写,这也是上面列表的来源。

    虽然这些基准测试是在 Nvidia 硬件上完成的,但它对于 AMD 和 Intel 图形硬件也是一个很好的指南。

    关于webgl - 使用单个顶点缓冲区还是多个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564104/

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