Platform SDK: DirectX

頂点色ステート

[C++]

D3DVERTEXD3DLVERTEX、および D3DTLVERTEX 型の頂点は、色情報と法線情報を同時に持つことはできない。デフォルトのシェーディング モードはグーロー シェーディングで、このモードは頂点の色情報と法線情報の両方に依存するため、Direct3D ではライティング計算に頂点色を使用しなかった。

ところが、DirectX 5.0 で柔軟な頂点フォーマットが導入されたことにより、頂点は色情報と法線情報の両方を持てるようになった。デフォルトでは、この情報を使用してライティング計算が実行される。アプリケーションで頂点のカラー ライティング情報の使用を無効にする場合、IDirect3DDevice7::SetRenderState メソッドを呼び出し、第 1 パラメータとして D3DRENDERSTATE_COLORVERTEX を渡す。第 2 パラメータを FALSE に設定すると頂点のカラー ライティングが無効になり、TRUE に設定すると有効になる。

頂点単位色が有効なっている場合、アプリケーションでは、頂点の色情報の情報ソースを設定できる。D3DRENDERSTATE_DIFFUSEMATERIALSOURCED3DRENDERSTATE_SPECULARMATERIALSOURCED3DRENDERSTATE_AMBIENTMATERIALSOURCE、および D3DRENDERSTATE_EMISSIVEMATERIALSOURCE レンダリング ステートによって、ディフューズ、スペキュラ、アンビエント、およびエミッション色の色成分ソースの色ソースを制御する。これらの各レンダリング ステートは、D3DMATERIALCOLORSOURCE 列挙型のメンバに設定できる。この列挙型は、現在のマテリアル、ディフューズ色、またはスペキュラ色を、指定された色成分のソースとして使用するようシステムに知らせる定数を定義する。

[Visual Basic]

D3DVERTEXD3DLVERTEX、および D3DTLVERTEX 型の頂点は、色情報と法線情報を同時に持つことはできない。デフォルトのシェーディング モードはグーロー シェーディングであり、このモードは頂点の色情報と法線情報の両方に依存するため、Direct3D ではライティング計算に頂点色を使用しなかった。

柔軟な頂点フォーマットを使用すると、既に説明した頂点タイプとは対照的に、頂点は色情報と法線情報の両方を持つことができる。デフォルトでは、この情報を使用してライティング計算が実行される。アプリケーションで頂点のカラー ライティング情報に使用を無効にする場合、Direct3DDevice7.SetRenderState メソッドを呼び出し、第 1 パラメータとして D3DRENDERSTATE_COLORVERTEX を渡す。第 2 パラメータを FALSE に設定すると頂点のカラー ライティングが無効になり、TRUE に設定すると有効になる。

頂点単位色が有効になっている場合、アプリケーションでは、頂点の色情報の情報ソースを設定できる。D3DRENDERSTATE_DIFFUSEMATERIALSOURCED3DRENDERSTATE_SPECULARMATERIALSOURCED3DRENDERSTATE_AMBIENTMATERIALSOURCE、および D3DRENDERSTATE_EMISSIVEMATERIALSOURCE レンダリング ステートによって、ディフューズ、スペキュラ、アンビエント、およびエミッション色の色成分ソースの色ソースを制御する。これらの各レンダリング ステートは、CONST_D3DMATERIALCOLORSOURCE 列挙型のメンバに設定できる。これらの列挙型は、現在のマテリアル、ディフューズ色、またはスペキュラ色を、指定された色成分のソースとして使用するようシステムに知らせる定数を定義する。