1

オクルージョン クエリに関する問題に遭遇しました。私の場合、クエリの結果は常に想定よりも大きく見えます。たとえば、レンダリングに 1024*1024 の解像度を使用していますが、シーン内のオブジェクトのクエリ結果は 2085029(>1024*1024) です。

使用されるクエリ メソッドは、GPU Gems Chapter 29からのものです。

        glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
        glDepthMask(GL_FALSE);
        glBeginQuery(GL_SAMPLES_PASSED, occlusionQuery[0]);

        mesh->Render();

        glEndQuery(GL_SAMPLES_PASSED);
        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
        glDepthMask(GL_TRUE);
        glGetQueryObjectuiv(occlusionQuery[0], GL_QUERY_RESULT, &screenFragmentCount[0]);

誰でも助けることができますか?

4

1 に答える 1

4

オクルージョン クエリでは、テストに合格したピクセル数はわかりません。テストに合格したフラグメント(より正確には「サンプル」) の数がわかります。

1 つの三角形を描画し、その前に三角形を描画すると、前の三角形が後の三角形によって遮られていても、オクルージョン クエリは両方のフラグメントをカウントします。三角形は順番にラスタライズされます。したがって、前の三角形を覆う後の三角形は、オクルージョン クエリ カウントが増加するまでにラスタライズされていません。このようなセルフ オクルージョンは、三角形が最も近いものから最も遠いものへとレンダリングされる場合にのみカウントされます。

于 2016-12-14T19:13:00.160 に答える