OpenGL から CPU 上の配列に深度バッファを抽出しようとしています。
私が以下に持っているコード(元のように多少変更されているのは、レンダリングされた画像を抽出するように設計された既存のコンポーネントであり、正常に機能します)は「機能」しますが、常に正確に0を返します。
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_PIXEL_PACK_BUFFER, buffer);
int size = w*h*sizeof(GLubyte);
glBufferData(GL_PIXEL_PACK_BUFFER, size, NULL, GL_STREAM_READ);
glReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
GLubyte* depth = (GLubyte*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
return depth;
呼び出しのglReadBuffer(GL_DEPTH)
後に使用を試みましたが(すべてのリソースが推奨するものですが、誰も理由を説明していないようです)、どちらも無効な列挙型エラーを生成します。GL_DEPTH_TEST が有効になっており、エラーは発生していません。glBindBuffer
GL_DEPTH_COMPONENT24