2011-12-13 39 views

回答

2

片段着色器不是爲它工作在片段給定當前緩衝器值。嘗試使用這些緩衝區作爲紋理讀取這些值,不會在一般情況下產生合理的結果。這是「未定義的行爲」。

有一定具體案件它可以工作。

首先,你可以使用texture barriers。這在技術上是NVIDIA的擴展,但ATI也支持它。屏障基本上是緩存刷新。它允許您將當前渲染目標作爲紋理進行綁定並從中讀取:只需一次。您可以執行一次讀取操作,之後您又回到「未定義行爲」,除非您使用另一個屏障刷新緩存。

Direct image read/writes是GL 4.x級硬件(又名:DX11)特有的功能。它允許您任意讀取和寫入綁定圖像。然而,要做到這一點,你必須在不同的着色器實例之間同步訪問。這種方法有很多警告,所以你應該閱讀如何做到這一點。

相關問題