什么时候应该在着色器编程中使用制服?

时间:2010-04-12 19:40:02

标签: opengl graphics glsl

在顶点着色器中,我仅使用制服计算矢量。因此,此计算的结果对于顶点着色器的所有实例化都是相同的。我应该在CPU上进行此计算并将其作为统一上传吗?如果我有十个这样的计算怎么办?如果我以这种方式上传大量的制服,CPU-GPU通信是否变得如此之慢以至于在顶点着色器中重新计算这些值实际上更快?

1 个答案:

答案 0 :(得分:1)

我实际上取决于制服/顶点计数比。如果顶点不仅仅是统一变量,那么计算CPU上的制服可能会更好,这是最常见的情况。

如果统一值很多并且它们的计算很复杂(即逆矩阵),而顶点数很少,则卸载CPU并在GPU上执行计算可能会更好。

比率阈值难以确定,因为许多因素会影响着色器执行。通常情况下,最好在CPU上计算大部分制服,以卸载着色器执行。

注意:一旦你设置了统一变量,着色器程序就会保留它们的值,直到它再次重新链接。