我注意到如果我在颜色缓冲区之前绑定我的深度缓冲区,应用程序会按预期工作:
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);
编辑
之前的深度限制:
深度限制后: