2012-07-20 48 views
3

我使用的OpenGL(LWJGL)Java包裝我得到獲取不完整的FBO設置GL_RGBA16F紋理格式

GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 

狀態時,如果設置了FBO的質感附件格式是GL_RGBA16F.In其實只要不是GL_RGBA導致此錯誤。 這裏是我的FBO紋理設置:

glBindTexture(GL_TEXTURE_2D, texId); 

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, _width, _height, 0, GL_RGBA, GL_FLOAT, (ByteBuffer) null); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 

glBindFramebuffer(GL_FRAMEBUFFER, _frameBuffer); 
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0); 
glDrawBuffers(GL_COLOR_ATTACHMENT0); 

這裏是深度附件:

_depthBuffer = glGenRenderbuffers(); 
glBindRenderbuffer(GL_RENDERBUFFER, _depthBuffer); 
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, _width, _height); 
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthBuffer); 

UPDATE:

事實上,如果我換的內部格式和格式像這樣的地方: GL_RGBA,GL_RGBA16F 比FBO完成ok.But在我看到的用法的例子是GL_RGBA16Fgoes第一。

UPDATE1: 到目前爲止沒有得到來自上LWJGL forum.Also任何答案提交這個問題作爲一個錯誤,但也得到了來自開發無人接聽team.If別人可以測試與質感附件使用浮點格式的FBO並報告完整性是否可以很好。目前我認爲我的代碼中沒有錯誤。我還在2臺機器上測試過它,並得到了相同的結果。

回答

2

這是我的錯誤。我把GL_RGBA16F作爲內部格式參數誤傳爲GL_RGBA格式。問題解決了。

+0

您沒有將此獎勵給幫助您找到問題的人的任何特定原因?這不是你的運動。 – 2012-10-07 20:51:00

+0

如果你仔細閱讀他的回答和我的意見,你可以看到他提出的解決方案不是正確的。我也失去了獎勵,所以我沒有興趣從任何人那裏「偷走」它:) – 2012-10-07 21:27:54

+0

正如他所說: GL_RGBA16F在OpenGL 3.3中不可用,也許這是你的問題?「對我來說似乎很清楚。他協助你找到你的問題。給他看點似乎是公平的。但是無所謂。 – 2012-10-07 21:33:51

0

您命名的紋理是'tex',但綁定到顏色附件的紋理是'texId'。

編輯:

我使用FBO,並獲得GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT當我嘗試我的英特爾HD3000的應用程序,但不是AMD或NVIDIA(的OpenGL 4.2)。不同的是,英特爾HD3000僅支持OpenGL 3.1。 GL_RGBA16F在OpenGL 3.3中不可用,也許這是你的問題?

+0

這是我在這篇文章中的拼寫錯誤。源代碼中的設置分爲2個函數。第一個創建紋理,第二個將其附加到FBO。所以紋理名稱是可以的,因爲在這個代碼示例中,我將代碼放在一起從這兩種方法,只忘了重新命名tex texId.Have你試過這樣的LWJGL設置? – 2012-07-28 08:06:14

+0

在LWJGL中,GL版本基於您選擇的API方法。但通常我正在使用GL 4.0。我有2臺機器配有NVidia GeForce 620GT和GeForce 550GT。兩者都給出了相同的結果。實際上,除了RGBA在FBO中給我這個錯誤。即使我使用GL_RGBA8。 – 2012-07-28 08:46:05