我注意到,如果我的顏色緩衝區之前綁定我的深度緩存,應用按預期工作:OpenGL ES 2.0的緩衝設置
glGenRenderbuffers(1, &_depthbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _depthbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, _sw, _sh);
glGenRenderbuffers(1, &_renderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _renderbuffer);
[_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];
然而,結合深度緩衝之後引起沒什麼渲染,甚至我glClearColor設置將被忽略:
glGenRenderbuffers(1, &_renderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _renderbuffer);
[_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];
glGenRenderbuffers(1, &_depthbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _depthbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, _sw, _sh);
我已經得到了通過深入研究各個組件,瞭解一些如何OpenGL ES 2.0的工作流,但這好像它是每個人都只是做他們的教程中的唯一的事情/書籍,但沒有解釋爲什麼。有任何想法嗎?這是甚至是一個問題,或者可能在我的設置的其餘部分有問題嗎? (如果是的話,我會包括所有的代碼)
編輯
@cli_hlt - 深度緩衝區已經被添加到幀緩衝:
glGenFramebuffers(1, &_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthbuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, _renderbuffer);
編輯
深度之前:
深度綁定後:
檢查這個問題的答案:http://stackoverflow.com/questions/4361516/request-a-depthbuffer-in-opengl-es-for-iphone - 你似乎缺少查詢緩衝區大小和附加它到幀緩衝區。 – 2012-03-28 14:47:53
後來到了;如果它不在那裏,不管我在訂單順序上有什麼問題,我都不會使用深度緩衝區。 – 2012-03-28 15:00:51
好的。 _sw和_sh是否正確?我在問上面的答案,答案海報完全是第二種方式,當答案被接受時,我認爲它正在工作。 – 2012-03-28 15:19:19