更新VBO或使用制服?

时间:2015-09-08 00:48:56

标签: opengl vbo vertex-shader vertices

假设我的场景中有数百个矩形。他们每个人都在改变每一帧:

  • 他们移动场景,旋转,放大/缩小
  • 顶点的颜色变化,应与纹理的颜色组合
  • 纹理坐标更改,因为它们是2D动画

我该怎样做才能获得最佳性能?有我的想法。请帮助我选择哪个是最好的或建议别的:

  • 每帧更新VBO
  • 制作比需要更多的顶点(例如:在VBO中存储所有动画的帧)并选择渲染的内容(多次调用glDrawElements)
  • 通过制服发送更改数据,并在顶点着色器而不是CPU
  • 中重新计算

主要问题实际上是:我可以根据需要多次调用哪些函数,哪些函数可以避免每次主循环调用多少次?

1 个答案:

答案 0 :(得分:2)

通常模型在本地空间中保持不变,因此您只需将其上传一次到VBO。翻译,旋转,缩放等变化是通过将相应的变换矩阵加载到制服中并在着色器中使用它们来执行的。