Microsoft DirectX 8.0 (Visual Basic)

アルファ テスティング ステート

Microsoft® Visual Basic® で記述されたアプリケーションでは、アルファ テスティングを使用して、いつピクセルをレンダリング ターゲット サーフェスに書き込むかを制御する。D3DRS_ALPHATESTENABLE レンダリング ステートを使用することにより、アプリケーションでは、アルファ テスト関数に基づいて各ピクセルをテストできるように現在の Microsoft® Direct3D® デバイスを設定する。テストが成功すると、ピクセルがサーフェスに書き込まれる。テストが失敗すると、ピクセルは無視される。アルファ テスト関数は、D3DRS_ALPHAFUNC レンダリング ステートで選択する。D3DRS_ALPHAREF レンダリング ステートを使用することにより、アプリケーションでは、比較するすべてのピクセルに参照アルファ値を設定する。

アルファ テスティングは、通常、透明に近いオブジェクトをラスタ化する際のパフォーマンスを改善するために使用する。ラスタ化するカラー データが指定のピクセル (D3DPCMPCAPS_GREATEREQUAL) よりも不透明に近い場合、ピクセルが書き込まれる。そうでない場合は、ラスタライザはピクセルを無視し、2 色のブレンドに必要な処理を省略する。次のサンプル コードは、指定された比較関数がサポートされているかどうかを調べている。サポートされている場合は、レンダリングのパフォーマンス改善に必要な比較関数のパラメータを設定する。

' このサンプル コードでは、d3dDeviceDesc は、
' 前の Direct3D8.GetDeviceCaps の呼び出しによって格納された
' D3DCAPS8 型であると仮定している。
If (Caps.AlphaCmpCaps And D3DPCMPCAPS_GREATEREQUAL) Then
    Call dev.SetRenderState(D3DRS_ALPHAREF, &H1)
    Call dev.SetRenderState(D3DRS_ALPHATESTENABLE, True)
    Call dev.SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL)
End If

' 比較関数がサポートされていない場合にもレンダリングを実行する。 
' ただし、パフォーマンスは改善されない。

すべてのハードウェアがアルファ テスティング機能をサポートしているわけではない。デバイス機能を調べるには、Direct3D8.GetDeviceCaps メソッドを呼び出す。デバイス機能を取得した後、使用する比較関数の関連する D3DCAPS8 型の AlphaCmpCaps メンバを調べる。AlphaCmpCaps メンバが D3DPCMPCAPS_ALWAYS 能力のみ、または D3DPCMPCAPS_NEVER 能力のみ含んでいる場合、ドライバはアルファ テストをまったくサポートしていない。