私はステンシルテストを非常に広範囲に使用して不規則な形状をレンダリングするOpenGLアプリケーションを持っています(単純な2D CSGと少し似ています)。ステンシルテストに合格して実際にレンダリングされたフラグメントの数を確認できれば、これは一部の計算を簡略化するのに非常に役立ちます。具体的には、後でモンテカルロシミュレーションで近似する必要がなく、レンダリングされた形状の領域を無料で決定できます。
ジオメトリシェーダーから放出されるプリミティブにも、変換フィードバックと呼ばれる同様の概念があることを知っています。同様のコンセプトがフラグメントとステンシルテストに存在するかどうか知りたいのですが。
大まかな解決策は、ステンシルを介して対照的な1つの色を別の色にペイントし、そのバッファーを保存して、変更されたピクセルの数を数えることです。
—
TheBuzzSaw 2015
うーん、仕様ではオクルージョンクエリは深度テストに合格したフラグメントの数をカウントするようになっていますが、頭の上のところでは、ステンシルテストとどのように相互作用するのか今はわかりません。
—
Chrisは、2015
@ChristianRau深度テストに合格したフラグメントのみがカウントされるようですが、ステンシル、破棄、アルファテストは無視されます。
—
モーリスラヴォー2015
@ChristianRauとMauriceの元のARB_occlusion_query仕様では、深度テストとステンシルテストの両方に合格したサンプルをカウントしていると明示されています。このStackOverflowの質問も参照してください。
—
ネイサンリード、
@NathanReed答えを書こうとしているようですね。
—
クリスは、モニカを2015