Full-Scene アンチエイリアシング (Direct3D 9)
フル シーンアンチエイリアシングとは、シーン内の各ポリゴンのエッジが 1 回のパスでラスター化されるときにぼやけていることを指します。2 番目のパスは必要ありません。 フルシーンアンチエイリアシングは、サポートされている場合、三角形と三角形のグループにのみ影響します。 Direct3D サービスを使用して線をアンチエイリアシングすることはできません。 フルシーンアンチエイリアシングは、各ピクセルでマルチサンプリングを使用して Direct3D で行われます。 マルチサンプリングを有効にすると、ピクセルのすべてのサブサンプルが 1 つのパスで更新されますが、複数のレンダリング パスを含む他の効果に使用する場合、アプリケーションでは、特定のレンダリング パスの影響を受けるサブサンプルの一部のみを指定できます。 後者の方法では、モーション ブラー、被写界深度フォーカス効果、反射ぼかしなどのシミュレーションが可能になります。
どちらの場合も、各ピクセルに対して記録されたさまざまなサンプルがブレンドされ、画面に出力されます。 これにより、アンチエイリアシングやその他の効果の画質が向上します。
IDirect3D9::CreateDevice メソッドを使用してデバイスを作成する前に、フルシーンアンチエイリアシングがサポートされているかどうかを判断する必要があります。 これを行うには、次のコード例に示すように IDirect3D9::CheckDeviceMultiSampleType メソッドを呼び出します。
/*
* The code below assumes that pD3D is a valid pointer
* to a IDirect3D9 interface.
*/
if( SUCCEEDED(pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL , D3DFMT_R8G8B8, FALSE,
D3DMULTISAMPLE_2_SAMPLES, NULL ) ) )
// Full-scene antialiasing is supported. Enable it here.
IDirect3D9::CheckDeviceMultiSampleType が受け入れる最初のパラメーターは、照会するディスプレイ アダプターを示す序数です。 このサンプルでは、D3DADAPTER_DEFAULTを使用してプライマリ ディスプレイ アダプターを指定します。 2 番目のパラメーターは、デバイスの種類を指定する D3DDEVTYPE 列挙型の値です。 3 番目のパラメーターは、サーフェスの形式を指定します。 4 番目のパラメーターは、フル ウィンドウ マルチサンプリング (TRUE) またはフル シーン アンチエイリアシング (FALSE) について問い合わせるかどうかを Direct3D に指示します。 このサンプルでは 、FALSE を 使用して、フルシーンアンチエイリアシングに関する問い合わせを行っていることを Direct3D に伝えます。 最後のパラメーターは、テストするマルチサンプリング手法を指定します。 D3DMULTISAMPLE_TYPE列挙型の値を使用します。 このサンプルでは、2 つのレベルのマルチサンプリングがサポートされているかどうかをテストします。
使用するマルチサンプリングのレベルがデバイスでサポートされている場合、次の手順では、 D3DPRESENT_PARAMETERS 構造の適切なメンバーを入力してプレゼンテーション パラメーターを設定し、マルチサンプル レンダリング サーフェイスを作成します。 その後、デバイスを作成できます。 次のサンプル コードは、マルチサンプリング レンダー サーフェスを使用してデバイスを設定する方法を示しています。
/*
* The example below assumes that pD3D is a valid pointer
* to a IDirect3D9 interface, d3dDevice is a pointer to a
* IDirect3DDevice9 interface, and hWnd is a valid handle
* to a window.
*/
D3DPRESENT_PARAMETER d3dPP
ZeroMemory( &d3dPP, sizeof( d3dPP ) );
d3dPP.Windowed = FALSE
d3dPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dPP.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &d3dDevice)
マルチサンプリングを使用するには、D3DPRESENT_PARAMETERの SwapEffect メンバーをD3DSWAPEFFECT_DISCARDに設定する必要があります。
最後の手順では、 IDirect3DDevice9::SetRenderState メソッドを呼び出し、D3DRS_MULTISAMPLEANTIALIASを TRUE に設定することで、マルチサンプリングアンチエイリアシングを有効にします。 この値を TRUE に設定すると、そのレンダリングにマルチサンプリングが適用されます。 レンダリングする内容に応じて、マルチサンプリングを有効または無効にすることができます。
関連トピック