glReadPixels
機能で深度バッファから深度値を取得しようとしています。それはいつも私に0を返します。OpenGL ES 1.0の深さを得るためにglReadPixelsが機能しない
すべての最初は、私は、デプスバッファの添付ファイルを作成します、
float depth = 0.0f;
glReadPixels(point.x, self.renderUIView.frame.size.height - point.y, 1, 1, GL_DEPTH_COMPONENT16_OES, GL_FLOAT, &depth);
が、それは動作しません:
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[self.context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
if (USE_DEPTH_BUFFER)
{
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
}
はその後、私はデプスバッファからの奥行き値を取得するにはglReadPixels
関数を呼び出します深さの値は常に0です。私はglGetError()
からエラーコードを取得しようとします、それは1280
を返します。セットアップに迷ったことは何ですか?
あなたのお返事ありがとうございます。問題はOpenGL ES 1.0とOpenGL 2.0の間で同じですか? –
私はそれがわからないことを恐れています。 –
@RawN OK、お返事ありがとうございます。 –