1
在頂點着色器中,我只使用制服來計算矢量。因此,這個計算的結果對頂點着色器的所有實例都是一樣的。我應該在CPU上進行這種計算並將其作爲制服上傳嗎?如果我有十次這樣的計算呢?如果我以這種方式上傳很多制服,CPU-GPU通信是否會變得如此緩慢以至於在頂點着色器中重新計算這些值實際上會更快?什麼時候應該使用統一的着色器編程?
在頂點着色器中,我只使用制服來計算矢量。因此,這個計算的結果對頂點着色器的所有實例都是一樣的。我應該在CPU上進行這種計算並將其作爲制服上傳嗎?如果我有十次這樣的計算呢?如果我以這種方式上傳很多制服,CPU-GPU通信是否會變得如此緩慢以至於在頂點着色器中重新計算這些值實際上會更快?什麼時候應該使用統一的着色器編程?
我實際上依賴於制服/頂點數比。在頂點數多於統一變量的情況下,最好在CPU上計算統一數據,這是最常見的情況。
在制服值很多且計算複雜(即逆矩陣)的情況下,儘管頂點計數較低,但卸下CPU並在GPU上執行計算可能會更好。
由於許多因素影響着色器的執行,因此比率閾值難以確定。通常最好是計算CPU上大部分的制服,以減輕着色器的執行。
注意:一旦設置了統一變量,着色器程序就會保留它們的值,直到它再次被重新鏈接。