我正在做一個layered rendering到使用OpenGL 4.3的屏幕外FBO。我使用了GL_TEXTURE_3D作爲COLOR附件的幾個圖層。然後,我使用幾何着色器在編寫輸出時索引到不同的圖層。它工作正常。現在我還需要模板附件,用於在渲染過程中執行的模板測試。首先,我嘗試僅附加一個渲染緩衝區,就像使用2D附件一樣。GL_TEXTURE_3D顏色和模板FBO附件
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
GL_RENDERBUFFER, _stencilBuffer)
在這種情況下,檢查FBO當用於完整性我正在幀緩衝器錯誤:
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
然後我假定如果顏色附件是3D所以模版附件也必須3D.And因爲沒有3D渲染緩衝區,我嘗試爲FBO的深度模板插槽添加3D紋理。
glTexImage3D(GL_TEXTURE_3D, 0, GL_DEPTH24_STENCIL8, width, height, depth,
0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8);
凡寬度 - 紋理的寬度,高度 - 紋理的高度,深度 -number紋理3D內部層。
//Attach to FBO:
glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, texId, 0));
這樣做,這樣我得到:
GL_FRAMEBUFFER_INCOMPLETEINVALID_OPERATION
我已搜查任何可能的例子找到這樣的設置應該怎麼做,但一無所獲。
(由於某種原因,這實際上固定其堅持我以前的測試問題)I also tried to use GL_TEXTURE_2D_ARRAY instead,but same problem.
UPDATE
我的錯誤並不在debug.Basically一半是我上面寫的我的一些調查結果糊塗了可以被丟棄。但因爲其他人可能會遇到同樣的問題,我會解釋發生了什麼。
起初,當我附上一個3D紋理FBO的附色我創建了一個渲染緩衝GL_DEPTH_STENCIL attachment.And是,在完整性檢查我:
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
接下來,我想代替:
glTexImage3D(GL_TEXTURE_3D, 0, GL_DEPTH24_STENCIL8, width, height, depth,
0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8);
其拋出:
INVALID_OPERATION
現在,而不是GL_TEXTURE_3D目標我想GL_TEXTURE_2D_ARRAY這最終導致了FBO是complete.So,而我還是想知道爲什麼GL_TEXTURE_3D原因INVALID_OPERATION(隨意張貼的答案),這種變化已經解決了這個問題。
你可以發佈你從glCheckFramebufferStatus獲得的實際數字代碼嗎? –
@NicolBolas Oh Man!你回來了!我們想念你了:) –