回答:
元の形では、ステンシルバッファは1ピクセルあたり1ビット(つまり、黒または白で、グレーはありません)フレームバッファでした。他のフレームバッファのように、好きなようにレンダリングできます。その後、そのバッファーの内容を使用して、通常のバッファーに描画するときに「ステンシル」またはマスクアウトできます。
例:運転ゲームを作っているとしましょう。車の後ろにあるものを示す小さなバックミラーを画面に表示したい場合。車の後ろを指すビューをレンダリングする必要がありますが、それはバックミラーの小さな丸い長方形内でのみレンダリングする必要があります。典型的な解決策は次のとおりです。
ステンシルはそれをマスクし、ミラーの形状にのみ描画します。
レンダーパイプラインの柔軟性とプログラミング性が大幅に向上したため、ステンシルバッファーは、必要な処理をすべて実行できる汎用の1ビットフレームバッファーとして使用されます。影は一般的な使用例です。
これは、ポリゴンをレンダリングするときに修正できるピクセルを制御する単なるバッファーです。各ピクセルには、対応するステンシル値があり、これらの値に応じてピクセルを条件付きで変更/無視できます
最も簡単なのは、物理的なステンシルのように使用できることです。これは、一部のピクセルを通過させ、他のピクセルの変更を止めるマスクです。
動作はzバッファに非常に似ています-深度テストのように、ステンシルテストはtrue / falseテストであり、ステンシルテストを制御するための同様の設定があります(より大きい/少ない/等しい場合に合格)。ただし、深さを書き込むのではなく、通常、事前に定義された値が書き込まれるか、ステンシルシャドウアルゴリズムで使用されるように、ピクセルが描画されるときにインクリメント/デクリメントされます。