Я заметил, что, если я связываю свой буфер глубины перед буфером цветов, приложение работает как задумано:
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, благодаря тщательному изучению отдельных компонентов, но кажется, что это единственное, что все просто делают в своих уроках / книгах, но не объясняют Зачем. Есть идеи? Это даже проблема, или возможно что-то не так в остальной части моей установки? (если так, я включу весь код)
EDIT
@ 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);
EDIT
Глубина привязки до:
Глубина привязки после: