カラー バッファーの前に深度バッファーをバインドすると、アプリケーションが意図したとおりに動作することに気付きました。
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);
編集
前の深さ境界:
後にバインドされた深さ: