Platform SDK: DirectX

エッジ アンチエイリアシング

エッジ アンチエイリアシングでは、シーンをレンダリングした後、オブジェクトの凸状シルエットを線にアンチエイリアシングするために再レンダリングする。システムは辺を再描画し、ぼかして、不自然な効果を縮小する。

[C++]

デバイスがエッジ アンチエイリアシングをサポートしている場合は、D3DPRIMCAPS 構造体 (IDirect3DDevice7::GetCaps メソッドを呼び出して設定する) に D3DPRASTERCAPS_ANTIALIASEDGES 能力フラグが公開される。この場合、D3DRENDERSTATE_EDGEANTIALIAS レンダリング ステートを TRUE に設定し、次に IDirect3DDevice7::DrawPrimitive、および D3DPT_LINESTRIP または D3DPT_LINELIST プリミティブ タイプのいずれかを使用して、シーン内のエッジのみ再描画する。エッジ アンチエイリアシングの動作は、線以外のプリミティブについては定義されていないため、アンチエイリアシングが完了したら、D3DRENDERSTATE_EDGEANTIALIAS を FALSE に設定して機能を確実に無効にする。

[Visual Basic]

デバイスがエッジ アンチエイリアシングをサポートしている場合は、D3DPRIMCAPS 型 (Direct3DDevice7.GetCaps メソッドを呼び出して設定する) に D3DPRASTERCAPS_ANTIALIASEDGES 能力フラグが公開される。この場合、D3DRENDERSTATE_EDGEANTIALIAS レンダリング ステートを True に設定して、次に Direct3DDevice7.DrawPrimitive、および D3DPT_LINESTRIP または D3DPT_LINELIST プリミティブ タイプのいずれかを使用して、シーン内のエッジのみ再描画する。エッジ アンチエイリアシングの動作は、線以外のプリミティブについては定義されていないため、アンチエイリアシングが完了したら、D3DRENDERSTATE_EDGEANTIALIAS を False に設定して機能を確実に無効する。

シーンの中のすべてのエッジを再描画すると、大きな不自然な効果を生じさせずにすむが、計算量が膨大になる。また、この方法ではどのエッジをアンチエイリアシングするべきか判断が困難なこともある。再描画するのにもっとも重要なエッジは、非常に異なる色の領域の間のエッジ (たとえば影のエッジ)、または非常に異なるマテリアルの間の境界である。ほぼ同じ色の 2 つのポリゴンの間のエッジをアンチエイリアシングすることは、エフェクトがないわりに計算量は膨大である。こうした理由により、現在のハードウェアがサポートする場合は、フルシーン アンチエイリアシングが好ましいことが多い。詳細については、「フルシーン アンチエイリアシング」を参照すること。