Microsoft DirectX 8.0 (C++) |
Microsoft® Direct3D® には、色を記述する 4 つの成分 (赤、緑、青、およびアルファ) があり、これらを組み合わせて最終的な色が生成される。C++ の D3DCOLORVALUE 構造体は、これらの各成分を格納するように定義される。各メンバは、通常 0.0 と 1.0 を含む 0.0 〜 1.0 の範囲の浮動小数点値である。ライティングとマテリアルでは、共に同じ構造体を使用して色を記述するが、構造体内で使用する値は互いに少しずつ異なる。
光源のカラー値は、光源が発する特定の光の成分の量を表す。ライティングではアルファ成分は使用しないため、赤、緑、および青成分のみ関連がある。これらの 3 つの成分は、プロジェクション モニタの赤色、緑色、および青色のレンズに例えることができる。各レンズをオフにしたり (対応するメンバに 0.0 を設定)、できるだけ明るくしたり (1.0 を設定)、その間のレベルを設定することができる。各レンズからの色を組み合わせて、最終的なライティングの色を作成する。R:1.0、G:1.0、B:1.0 の組み合わせの場合、白色光になり、R:0.0、G:0.0、B:0.0 の場合は光をまったく放射しないライティングになる。色成分を 1 つだけ放射するライティングを作成して、純粋な赤色、緑色、または青色のライティングを作ることができる。また、色成分の組み合わせによっては、黄色や紫色などの色を放射するライティングを作成することもできる。色成分値を負にして、シーンから明かりをなくすような "暗色光" を作成できる。また、成分に 1.0 より大きな値を設定して、極端に明るいライティングを作成することもできる。
一方、マテリアルの場合、カラー値はそのマテリアルを使用するサーフェスがどのくらい光の成分を反射するかを表す。マテリアルの色成分が R:1.0、G:1.0、B:1.0、A:1.0 の場合、マテリアルはすべての光を反射する。同様に、R:0.0、G:1.0、B:0.0、A:1.0 の場合は、緑色の光をすべて反射する。マテリアルに複数の反射率を指定して、さまざまなエフェクトを作成できる。詳細については、「マテリアル プロパティ」を参照すること。
アンビエント ライトのカラー値は、ダイレクト ライト光源とマテリアルに使用するカラー値とは異なる。詳細については、「ダイレクト ライトとアンビエント ライトの比較」を参照すること。