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

鲍勃·阿洛夫

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

最好使用单个顶点缓冲区(四倍)表示游戏的所有棋子,然后为每个棋子在顶点着色器中重新缩放这些顶点?或者,我应该为每块定义一个单独的静态顶点缓冲区吗?

J

GPU是状态机,切换状态非常昂贵(由于通过WebGL实现引入了额外的检查层,因此切换状态非常昂贵),因此绑定顶点缓冲区非常昂贵。

将API调用减少到最少的良好做法。

即使有多个不同的对象,您仍要使用单个顶点缓冲区并使用drawArraysordrawElements方法的offset参数

以下是通过降低昂贵程度而排序的API调用列表(顶部是最昂贵的):

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

有关此方面的更多信息,您可以观看Cass Everitt和John McDonald撰写的精彩演讲“超越移植:现代OpenGL如何能够从根本上减少驱动程序开销”,这也是上面的清单。

尽管这些基准测试是在Nvidia硬件上完成的,但它也是AMD和Intel图形硬件的良好指南。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

合并顶点缓冲区

来自分类Dev

多个缓冲区还是单个缓冲区?

来自分类Dev

OpenGL复制顶点缓冲区对象

来自分类Dev

动态顶点缓冲区创建失败

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

Vulkan-顶点缓冲区更新

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

OpenGL绘制顶点缓冲区对象

来自分类Dev

将多个缓冲区对象与单个顶点数组对象绑定不起作用

来自分类Dev

使用顶点缓冲区对象的最低OpenGL ES版本

来自分类Dev

OpenGL无法使用VAO过程更新顶点缓冲区

来自分类Dev

无法使用lwjgl和顶点缓冲区渲染纹理

来自分类Dev

更改顶点缓冲区对象中的顶点颜色

来自分类Dev

使用SharpDX从DirectX 11中的多个顶点缓冲区进行绘制

来自分类Dev

为什么从颜色缓冲区而不是位置缓冲区获取顶点位置?

来自分类Dev

顶点缓冲区绑定索引和统一缓冲区绑定点?

来自分类Dev

c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

来自分类Dev

(DirectX 11)单个顶点缓冲区可以一次绑定到多个IA输入插槽吗?

来自分类Dev

非交错顶点缓冲区DirectX11

来自分类Dev

更新顶点缓冲区会导致调试层错误

来自分类Dev

OpenGL更新顶点数组/缓冲区

来自分类Dev

DirectX顶点缓冲区默认与默认+过渡

来自分类Dev

OpenGL:是否可以环绕顶点缓冲区?

来自分类Dev

具有X文件的非相干顶点缓冲区

来自分类Dev

如何在Android上更新顶点缓冲区?

来自分类Dev

冗余顶点缓冲区导致OpenGL无法正确绘制

来自分类Dev

OpenGL 4向顶点缓冲区提供数据

来自分类Dev

您如何读取顶点/索引缓冲区?

Related 相关文章

热门标签

归档