-1

glReadPixels() を使用して z バッファを読み取ると、z バッファの値が常に 0 になるのはなぜですか?

int main()
{
    glReadPixels(0.0,0.0,width,height,GL_DEPTH_COMPONENT,GL_FLOAT,depth_data);
    for(int i=0;i<10;i++)
        for (int j=0;j<10;j++)
            cout<<depth_data[i][j]<<endl;

    return 0;
}
4

1 に答える 1

2

ニーズに合わせてコンテキストを適切にセットアップしなかっただけだと思います。行う必要があるのは、深度バッファーへの書き込みを有効にする必要があることです (glDepthMask(GL_TRUE);)。とにかく最初はこれです。また、OpenGL では、深度バッファーに何かを書き込むために深度テストを有効にする必要があります。深度テストを実行したくない場合は、glDepthFunc への呼び出しを追加して、常に深度値を書き込みます。

glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_ALWAYS); // Change this to whatever kind of depth testing you want
glDepthRange(0.0f, 1.0f);

ピクセル データを読み取った後、OpenGL エラーがないかどうかを確認することもできます。多分あなたは深度バッファさえ持っていませんか?

これが役立つことを願っています。

于 2013-04-15T05:06:45.353 に答える