2011-07-27 35 views
0

對於屏幕外呈現到紋理,我在附接安裝GL_COLOR_ATTACHMENT0通過可以將GL_FLOAT紋理作爲COLOR附件分配給FBO嗎?

glTexImage2D限定的紋理(GL_TEXTURE_2D,0,GL_RGBA,寬度,高度,0,GL_RGBA,GL_FLOAT,NULL);

然後我使用輸出vec4的片段着色器呈現給FBO,所以通常情況下應該沒問題。要檢查我正確顯示紋理,我使用函數

glTexSubImage2D()

在紋理的中間添加一些灰色像素。紋理正確顯示(我可以在正確的位置完美地看到這些像素),但紋理的其餘部分只是嘈雜的僞像(當它不是黑色的時候)。

這是否來自我使用GL_FLOAT作爲GL_RGBA紋理的事實?如果是的話,我怎麼能在GLSL中將uvec4轉換成vec4?我的主着色器的輸出是vec4,我不知道如何將usampler2D紋理的uvec4輸出轉換爲我的最終vec4。

感謝您可能提供:)

編輯任何回答:我找到了解決辦法:我沒有透明之間我的2呈現GL_COLOR_BUFFER_BIT。

回答

3

我知道這個問題是自我回答,但討論必須有這個問題:

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,width,height,0,GL_RGBA,GL_FLOAT,NULL); 

那請問創建浮點紋理。它創建一個包含標準化,無符號整數的紋理。

actual format of a texture是第三個參數;它定義了紋理實際包含的內容。最後三個參數定義了你如何嘗試upload data to the texture;如果指針爲NULL(並且沒有綁定PBO),則參數意味着沒有任何內容

+0

哦,那時我弄錯了。非常感謝你的回答,這可能解釋爲什麼我的陰影映射不起作用:) – Tuxer

相關問題