【发布时间】:2014-07-15 02:48:28
【问题描述】:
我的问题是 OpenGL 是并行绘制图元,还是只有光栅化是这样完成的?简而言之,如果我想两次绘制相同的图元,如果我将顶点复制到缓冲区两次,并且只调用一次drawarrays,渲染速度是否会更快,或者会导致与只复制顶点相同的渲染速度一次,调用两次drawarrays(不计算CPU调用GPU的时间)
【问题讨论】:
我的问题是 OpenGL 是并行绘制图元,还是只有光栅化是这样完成的?简而言之,如果我想两次绘制相同的图元,如果我将顶点复制到缓冲区两次,并且只调用一次drawarrays,渲染速度是否会更快,或者会导致与只复制顶点相同的渲染速度一次,调用两次drawarrays(不计算CPU调用GPU的时间)
【问题讨论】:
取决于 GPU 和驱动程序;典型的图形卡具有多个内核,可以在多个数据集上运行相同的代码路径。这就是经典的Single instruction, multiple data并行,也是openGL并行的核心。
调用 drawArrays 两次对此无济于事,因为整个管道将被执行两次。
如果您想在不同位置绘制同一网格的多个副本,您通常会使用instancing 来更改实例之间的制服。
【讨论】: