Platform SDK: DirectX

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

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

[C++]

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

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

アンビエント ライトの色は、RGBA 値の形をとり、各成分は 0 〜 255 の整数値である (これは、Direct3D 直接モードのほとんどのカラー値とは異なる。詳細については、「ライティングとマテリアルのカラー値」を参照すること)。RGBA_MAKE マクロを使用して、整数から RGBA 値を生成できる。赤、緑、および青成分を組み合わせて、アンビエント ライトの最終的な色を作成する。アルファ成分は色の透明度を制御する。ランプ エミュレーションでは、アンビエント ライトは色を持たないため、アルファ成分は輝度に使用される。ハードウェア アクセラレーションまたは RGB エミュレーションを使用するときは、アルファ成分は無視される。

[Visual Basic]

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

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

DirectX7.CreateColorRGBA メソッドを使用して、Single 型の値から RGBA 値を生成できる。赤、緑、および青成分を組み合わせて、アンビエント ライトの最終的な色を作成する。アルファ成分は色の透明度を制御する。ランプ エミュレーションでは、アンビエント ライトは色を持たないため、アルファ成分は輝度に使用される。ハードウェア アクセラレーションまたは RGB エミュレーションを使用するときは、アルファ成分は無視される。