2012-06-27 47 views
1

我有個問題與片段着色器, 這是我的情況:輸出片段着色器的作爲紋理

我有一個3D場景與表示壁(用「GL.GL_QUADS」)的簡單的二維正方形在中間。 我使用函數「glu.gluLookAt」移動虛擬相機。

我爲牆壁實現了一個簡單的片段着色器,它基本上改變了牆壁的顏色以及從牆壁到虛擬攝像機的距離(使用dFdx和dFdy)。

問題是,我想將輸出存儲在緩衝區或紋理中,而不是將着色器的輸出可視化在牆上。

我嘗試使用「gl.glBindFramebufferEXT」,但在這種情況下,輸出是虛擬場景的整個渲染,而不僅僅是渲染到牆上的着色器的輸出。

那麼,如何在不提取所有渲染場景的情況下僅「提取」引用GL_QUADS的片段着色器的輸出?

回答

2

您需要設置正投影並僅渲染FBO所需的四邊形(或者只是一個屏幕對齊的四邊形)。然後,將場景與FBO的內容綁定爲紋理。

+0

它不起作用。如果我使用「gl.glOrtho」,四邊形總是與相機保持相同的距離,因此顏色不會改變。 – user1485565

+0

難道你不能通過牆上的「距離」作爲統一,並讓着色器以這種方式生成顏色嗎? – Ani

+0

不,我用dFdx和dFdy函數的另一種方法,四元組沒有單一顏色,每個像素可以有不同的顏色。 – user1485565

相關問題