Microsoft DirectX 8.0 (C++)

ステンシル バッファとは

ステンシル バッファは、レンダリング ターゲット サーフェスのピクセル単位の描画を有効または無効にする。このバッファの最も基本的なレベルでは、アプリケーションがレンダリングした画像の部分をマスクで覆うことが可能になり、その画像が表示されない。アプリケーションはディゾルブ、デカーリング、およびアウトライニングなどの特殊効果のためにステンシル バッファを使用することが多い。詳細については、「ステンシル バッファ技術」を参照すること。

ステンシル バッファ情報は、Z バッファ データに埋め込まれている。IDirect3D8::CheckDeviceFormat メソッドを使用して、ハードウェアがステンシルをサポートしているかどうかを調べることができる。次のコードに例を示す。

// 8 ビットのステンシル バッファリングを実行できないデバイスは拒否する。 
// 次の例では、pCaps は初期化された D3DCAPS8 構造体への
// 有効なポインタであると仮定している。 

if( FAILED( m_pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal,
                                       pCaps->DeviceType,  
                                       Format,  
                                       D3DUSAGE_DEPTHSTENCIL, 
                                       D3DRTYPE_SURFACE,
                                       D3DFMT_D24S8 ) ) )
        return E_FAIL;

CheckDeviceFormat では、該当するデバイスの能力に基づいて、作成するデバイスを選択できる。この場合、8 ビットのステンシル バッファをサポートしないデバイスは拒否される。これは CheckDeviceFormat で使用できる方法の 1 つにすぎない。詳細については、「ハードウェア サポートの判定」を参照すること。

デバイスでのステンシル バッファ制限を調べるには、サポートされているステンシル バッファ処理について D3DCAPS8 構造体の StencilCaps メンバに問い合わせる。