1
我創建了一個FBO並將紋理綁定爲其顏色附件,並且我有多個着色器程序對紋理進行一些後期處理,所有內容效果很好,但對我來說紋理可以用作輸入(sampler2D)以及着色器同時輸出是沒有意義的。紋理同時用作着色器程序的FBO顏色附件和sampler2D
以下是我所採取的步驟:
- 創建FBO
fboA
。 - 創建紋理
textureA
,並將其綁定爲fboA
的顏色附件。 - 調用
glBindFrameBuffer
將fboA
綁定到幀緩衝區目標。使用着色器程序shaderA
。 - 致電
glDrawArrays
繪製一些東西(最終繪製在textureA
上,因爲fboA
目前已綁定)。 - 致電
glUseProgram
使用着色器程序shaderB
其在片段着色器中具有sampler2D
制服。 - 綁定
textureA
作爲sampler2D
統一着色器程序shaderB
。 - 在片段着色器中,
textureA
用於設置fragColor
。
我感到困惑的是最後兩個步驟,其中textureA
作爲片段着色器的輸入,它仍然被綁定到當前幀緩存。在我看來,片段着色器正在讀取和寫入同一片內存,這不是一種未定義的行爲,爲什麼它仍然正常工作?
謝謝,正是我想知道的。此外,我只是指向[反饋循環](https://www.khronos.org/opengl/wiki/Framebuffer_Object#Feedback_Loops)。 – neevek