2
我正在使用一個原子計數器,它有自己的緩衝區,我想在其他一些通道中清除該計數器。因此,將緩衝區作爲着色器存儲緩衝區進行綁定以清除它,然後在第二次使用它作爲原子計數器緩衝區時很好嗎?另外我想問一下,在同一着色器中是否可以同時使用與着色器存儲緩衝區和原子計數器緩衝區相同的緩衝區,比方說,開始時4個字節只用於原子計數器,而在同一緩衝區中是其他讀取/修改的數據。使用緩衝區作爲着色器存儲緩衝區,然後作爲原子計數器緩衝區是否好?
我不完全明白你的意思是雙重或三重緩衝的計數器。你的意思是使用例如2個緩衝區爲相同的計數器,這是連續的着色器調用交換?我不知道這應該如何提高性能,因爲我需要清除這兩個反正。你能告訴我,glClearBuffer調用與一個線程的頂點着色器相比效率如何,它只是清除4個字節? – FamZ
@FamZ:「*你能告訴我glClearBuffer調用與一個線程的頂點着色器相比效率如何,它只是清除4個字節?」......什麼?想想看。其中之一是一個簡單的命令。另一個是調用*渲染過程*。即使GPU沒有專門用於寫入GPU內存的命令,但最糟糕的情況是GPU會調用計算着色器來進行寫入。哪個比你的VS例子更好*。 –
@FamZ使用多個緩衝區意味着您可以在使用當前的計數器時清除下一個計數器。由於兩個計數器是相互獨立的,所以在執行操作之前,實施不必等待計數器被清除。 – pleluron