Platform SDK: DirectX

ライティング ステート

Direct3D のジオメトリ パイプラインを使用するアプリケーションでは、ライティング計算を有効または無効にできる。頂点法線を含む頂点にのみ、ライティングが正しく適用される。頂点法線がない場合は、すべてのライティング計算で 0 の内積が使用される。つまり、法線を使用しない頂点にはライティングが適用されない。詳細については、「Direct3D のライティングにおける数学的計算」を参照すること。

[C++]

アプリケーションで Direct3D のライティングを有効にするには、D3DRENDERSTATE_LIGHTING レンダリング ステートを TRUE (デフォルト設定) に設定し、Direct3D のライティングを無効にするには FALSE に設定する。

ライティング レンダリング ステートは、頂点バッファ内の頂点で可能なライティング計算にはまったく依存しない。IDirect3DVertexBuffer7::ProcessVertices および IDirect3DVertexBuffer7::ProcessVerticesStrided メソッドは、頂点処理の際にライティング計算を制御する、独自のフラグを受け取る。

 :  このレンダリング ステートは、反対ではあるが従来のレンダリング メソッドで使用された D3DDP_DONOTLIGHT フラグと類似している。DirectX 7.0 では、このレンダリング ステートが D3DDP_DONOTLIGHT フラグに置き換わっている。D3DDP_DONOTLIGHT フラグで 1 回の呼び出しごとにライティングを無効にする場合、ステート値がアプリケーションによって再度変更されるまでは、レンダリングに関するすべての呼び出しがこのレンダリング ステートの影響を受ける。

[Visual Basic]

アプリケーションで Direct3D のライティングを有効にするには、D3DRENDERSTATE_LIGHTING レンダリング ステートを TRUE (デフォルト値) に設定し、無効にするには FALSE に設定する。

ライティング レンダリング ステートは、頂点バッファ内の頂点で可能なライティング計算にはまったく依存しない。IDirect3DVertexBuffer7::ProcessVertices および IDirect3DVertexBuffer7::ProcessVerticesStrided メソッドは、頂点処理の際にライティング計算を制御する、独自のフラグを受け取る。

 :  このレンダリング ステートは、反対ではあるが従来のレンダリング メソッドで使用された D3DDP_DONOTLIGHT フラグと類似している。DirectX 7.0 では、このレンダリング ステートが D3DDP_DONOTLIGHT フラグに置き換わっている。D3DDP_DONOTLIGHT フラグで 1 回の呼び出しごとにライティングを無効にする場合、ステート値がアプリケーションによって再度変更されるまでは、レンダリングに関するすべての呼び出しがこのレンダリング ステートの影響を受ける。