Platform SDK: DirectX

異方性テクスチャ フィルタリング

異方性とは、スクリーン平面に対して角度をなして位置座標したサーフェスを持つ 3D オブジェクトのテクセルの可視的なゆがみである。異方性プリミティブからのピクセルをテクセルにマッピングするとき、プリミティブの形状がゆがむ。Direct3D では、テクスチャ空間に逆マッピングされるスクリーン ピクセルの伸長度 (長さ÷幅) としてピクセルの異方性を測定する。

[C++]

異方性テクスチャ フィルタリングは、線形テクスチャ フィルタリングまたはミップマップ テクスチャ フィルタリングと併用することで、レンダリング結果を向上させることができる。IDirect3DDevice7::SetTextureStageState メソッドを呼び出して、異方性テクスチャ フィルタリングを有効にする。第 1 パラメータの値には、テクスチャ フィルタリング方法を選択するテクスチャの整数インデックス番号 (0 〜 7) を設定する。拡大フィルタを設定する場合は、第 2 パラメータの値として D3DTEXTUREMAGFILTER を渡す。縮小フィルタを設定する場合は、第 2 パラメータの値として D3DTEXTUREMINFILTER を渡す。第 3 パラメータには、拡大フィルタを設定する場合は D3DTFG_ANISOTROPIC、縮小フィルタを設定する場合は D3DTFN_ANISOTROPIC をそれぞれ設定する。詳細については、「テクスチャ フィルタリング ステート」を参照すること。

また、異方性の度合いをゼロより大きな値に設定する必要がある。これを設定するには、IDirect3DDevice7::SetTextureStageState メソッドを呼び出す。第 1 パラメータには、異方性の度合いを設定するテクスチャの整数インデックス番号 (0 〜 7) を設定する。第 2 パラメータには、D3DTSS_MAXANISOTROPY を渡す。最後のパラメータは、異方性の度合いでなければならない。

異方性の度合いを 1 に設定すると、異方性フィルタリングが無効になる (1 より大きな値を設定すると、異方性フィルタリングが有効になる)。異方性の度合いとして設定可能な値の範囲を判別するには、D3DPRIMCAPS 構造体の D3DPRASTERCAPS_ANISOTROPY フラグをチェックする。

[Visual Basic]

異方性テクスチャ フィルタリングは、線形テクスチャ フィルタリングまたはミップマップ テクスチャ フィルタリングと併用することで、レンダリング結果を向上させることができる。Direct3DDevice7.SetTextureStageState メソッドを呼び出して、異方性テクスチャ フィルタリングを有効にする。第 1 パラメータには、テクスチャ フィルタリング方法を選択するテクスチャの整数インデックス番号 (0 〜 7) を設定する。第 2 パラメータには、CONST_D3DTEXTUREMAGFILTERCONST_D3DTEXTUREMINFILTER、または CONST_D3DTEXTUREMIPFILTER 列挙のメンバを渡して、拡大、縮小、またはミップマップ フィルタを設定する。第 3 パラメータには、拡大フィルタを設定する場合は D3DTFG_ANISOTROPIC、縮小フィルタを設定する場合は D3DTFN_ANISOTROPIC をそれぞれ設定する。詳細については、「テクスチャ フィルタリング ステート」を参照すること。

また、異方性の度合いをゼロより大きな値に設定する必要がある。これを設定するには、Direct3DDevice7.SetTextureStageState メソッドを呼び出す。第 1 パラメータには、異方性の度合いを設定するテクスチャの整数インデックス番号 (0 〜 7) を設定する。第 2 パラメータには、D3DTSS_MAXANISOTROPY を渡す。最後のパラメータは、異方性の度合いでなければならない。

異方性の度合いを 1 に設定すると、異方性フィルタリングが無効になる (1 より大きな値を設定すると、異方性フィルタリングが有効になる)。異方性の度合いとして設定可能な値の範囲を調べるには、D3DPRIMCAPS 構造体の D3DPRASTERCAPS_ANISOTROPY フラグをチェックする。