更多顶点数据或更昂贵的着色器?

时间:2015-07-22 08:09:16

标签: opengl graphics directx gpu

我可以:

将顶点上传到缓冲区并执行一些额外的指令,没有什么非常昂贵,一些vec4创建,添加和一个vec4 x mat4 mulpltication。

将顶点数量的三倍上传到缓冲区,不需要额外的数学运算。

在这两种情况下,都会向着色器发送相同数量的顶点。它只是缓冲区大小会有所不同,因为第一种方法使用索引/实例化技巧。

显然,第一种情况对于缓冲区上传来说速度更快但是绘图呢?在大多数机器上可能会更快?

虽然我正在使用opengl,但这个问题也适用于directx。

1 个答案:

答案 0 :(得分:1)

根据您提供的信息,我不认为这是一个很好的答案。这至少取决于以下几点:

  • 顶点和其他数据的数量(如果你是CPU-GPU带宽限制)
  • 您在顶点着色器中已完成的工作量(如果GPU是顶点处理边界)
  • 像素着色器中的工作量(如果GPU受像素处理限制)
  • 控制顶点着色器中的流程(如果您需要做的额外工作需要动态分支或其他昂贵的东西)

一般来说,我认为渲染很少在顶点着色器中进行ALU绑定,因此可以进行计算,但是没有分析就无法知道。尝试两者并测量GPU时间(例如使用Nvidia NSight或AMD PerfStudio)以获得实际答案。还记得在对渲染管道进行其他更改后重复分析,因为上述因素可能导致瓶颈移位。