Microsoft DirectX 8.0 (C++)

ダイレクト ライトとアンビエント ライトの比較

ダイレクト ライトとアンビエント ライトは、ともにシーン内のオブジェクトを照らすが、両者は互いに影響し合うことはなく、それぞれが持つエフェクトは大きく異なるもので、これらの操作方法についてもまったく異っている。

ダイレクト ライトは、文字どおり、ダイレクトである。ダイレクト ライトは常に方向と色を持ち、これはグーロー シェーディングなどのシェーディング アルゴリズムの係数として使用される。ライティングの種類が異なれば、ダイレクト ライトの放射も異なり、それぞれ特別な減衰エフェクトを生み出す。ダイレクト ライトのライティング パラメータ セットは、IDirect3DDevice8::SetLight メソッドを呼び出して作成する。詳細については、「ライト」を参照すること。

アンビエント ライトは、シーン内のどの位置座標にもエフェクトを及ぼす。アンビエント ライトは、オブジェクトやオブジェクトのシーン内の位置座標にかかわらず、シーン全体を同じ強度の光で照らすライティングと考えることができる。アンビエント ライトはあらゆる位置に存在し、色と強度を持つのみで、位置座標や方向は持たない。アンビエント ライト レベルを設定するには、IDirect3DDevice8::SetRenderState メソッドを呼び出し、State パラメータとして D3DRS_AMBIENT を指定し、Value パラメータとして目的の RGBA 色を指定する。

アンビエント ライトの色は、RGBA 値の形をとり、各成分は 0 〜 255 の整数値である。これは、Microsoft® Direct3D® のほとんどのカラー値とは異なる。詳細については、「ライティングとマテリアルのカラー値」を参照すること。

D3DCOLOR_RGBA マクロを使用して RGBA 値を生成できる。赤、緑、および青成分を組み合わせて、アンビエント ライトの最終的な色を作成する。アルファ成分は色の透明度を制御する。ハードウェア アクセラレーションまたは RGB エミュレーションを使用するときは、アルファ成分は無視される。