我目前正在使用UBO在OpenGL 4.3中進行渲染,以將所有常量數據存儲在GPU上。 (材料描述,矩陣等)。 它的工作原理是UBO的小尺寸(在我的實現中爲64kB)迫使我無數次地切換緩衝區,減緩了渲染速度,我正在尋找類似的方法來存儲幾MB。SSBO作爲更大的UBO?
經過一番研究,我發現SSBO允許這樣做,但也有不需要的「特徵」:它們可以從着色器寫入,並且讀取速度可能較慢。
是否有比SSBO更好的解決方案來爲着色器提供大塊數據?我覺得我錯過了一些東西,爲什麼應該將UBO限制在幾kB,而存在能夠處理更多數據的更靈活的解決方案?如果着色器存儲緩衝區是我正在尋找的,有沒有辦法確保它們不被着色器修改?
我認爲紋理對於在着色器中使用大量數據是很好的,但我不確定。如果您需要更高的精度,您可以使用整數或浮點紋理。 –