2015-07-22 32 views
0

我可以:更多顶点数据或更昂贵的着色器?

上传顶点到缓冲区并做了几个额外的指令,没有什么非常昂贵的,几个vec4创作,添加,和一个vec4 x mat4 mulpltication。

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

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

很显然,第一种情况是缓冲区上传更快,但是绘图怎么样?在大多数机器上可能会更快?

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

回答

1

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

  • 顶点和其它数据(如果你是必然的CPU-GPU带宽)
  • 大量的工作,你已经做的顶点着色器(如果GPU是顶点处理界的数)
  • 量在像素着色器(工作的,如果GPU是(绑定像素处理)在顶点着色器
  • 控制流程是否需要做额外的工作需要动态分支或其他昂贵的东西)

ģ通常我相信渲染在顶点着色器中很少被ALU约束,因此可能可以进行计算,但没有分析就无法知道。尝试两种方法并测量GPU时间(例如,使用Nvidia NSight或AMD PerfStudio)以获得实际答案。另外请记住,在对渲染管道进行其他更改后重复分析,因为上述因素可能导致了转换的瓶颈。