哪个在 OpenGL 批处理中更重要?

Which one is more important in batching in OpenGL?

我已阅读Batch,Batch,Batch

在Batching过程中,主要有两件事:

1 Submit n number of triangles

2 SetState

那么哪个cpu更耗时呢?

或者 SetState 本身实际上根本不重要。这很重要,因为一旦状态改变,我们必须再次提交三角形?

总而言之,这并不重要(就像你在问题末尾所说的那样)

  • 如果您在不提交数据的情况下执行 SetState 以使用该状态进行绘制,那就太愚蠢了。不要执行 SetState。
  • 如果您绘制了多个状态相同的批次,您可能应该将它们作为一个批次提交。

"set state" 所做的将非常依赖于驱动程序,以及您更改的状态。某些更改可能需要大量验证,这可以在您设置状态时完成,或者在实际发送到 GPU 时完成,无法确定。

一般来说,我会把"submitting a draw"算作1个批次,不管做之前有没有改变状态。