2014-11-04 73 views
0

说,有与变革改变或多或少的每一帧,你会一般是这些绘图方法的快很多不同的网格:绘图网格与转型

  1. 对于每一帧填充一个大的顶点缓冲区与网格的转换顶点(转换在CPU上完成,每个帧将顶点复制到缓冲区中)。
  2. 对于每个对象的创建插入网格的非变换顶点,然后当绘图发送每个网格的变换作为一个统一的参数(在GPU上完成变换,在网格创建时复制顶点)。

我们可以假设所有网格都是绘制每一帧,所以不会复制案例1中的顶点)无关紧要。

回答

0

选项#2几乎总是会更快。如果你有ñ顶点和中号转换,这是做的区别〜一个CPU接着是〜ň总线传输N个算术OPS,对做〜中号总线传输(快),其次通过〜N GPU上的算术运算(也更快)。

唯一的时候,这将是一个失去的是,如果您的CPU在顶点处理(不太可能)总吞吐量方面比你的GPU的方式更快,或者如果中号是相同的数量级顺序ñ

+0

对于每个帧和每个网格,如#2但不是#1中所需要的,将变换设置为统一/常量着色器参数的成本如何?这种开销是微不足道的? – 2014-11-05 07:02:35

+0

这是我回答中引用的“〜M巴士转移”成本。在仅使用方法#2的应用中,开销不可忽略,但其数量级小于预先转换整个网格的成本,然后再进行〜N成本总线传输。这是因为大多数时候,N比M大很多个数量级,并且GPU在进行每个顶点转换时比CPU更有效率。 – MooseBoys 2014-11-05 18:13:20