我可以:
将顶点上传到缓冲区并执行一些额外的指令,没有什么非常昂贵,一些vec4创建,添加和一个vec4 x mat4 mulpltication。
将顶点数量的三倍上传到缓冲区,不需要额外的数学运算。
在这两种情况下,都会向着色器发送相同数量的顶点。它只是缓冲区大小会有所不同,因为第一种方法使用索引/实例化技巧。
显然,第一种情况对于缓冲区上传来说速度更快但是绘图呢?在大多数机器上可能会更快?
虽然我正在使用opengl,但这个问题也适用于directx。
答案 0 :(得分:1)
根据您提供的信息,我不认为这是一个很好的答案。这至少取决于以下几点:
一般来说,我认为渲染很少在顶点着色器中进行ALU绑定,因此可以进行计算,但是没有分析就无法知道。尝试两者并测量GPU时间(例如使用Nvidia NSight或AMD PerfStudio)以获得实际答案。还记得在对渲染管道进行其他更改后重复分析,因为上述因素可能导致瓶颈移位。