Platform SDK: DirectX |
デフォルトでは、Direct3D は、すべての頂点に対してライティング計算を実行する。この計算は、頂点法線を持たない頂点に対しても実行される (旧リリースの DirectX では、頂点法線を持つ頂点に対してのみライティングが実行された)。ただし、D3DRENDERSTATE_LIGHTING レンダリング ステートを使用してライティングを無効にできる。IDirect3DDevice7::SetRenderState メソッドを呼び出して、第 1 パラメータとして D3DRENDERSTATE_LIGHTING を渡し、第 2 パラメータとして TRUE または FALSE を渡す。ステートを TRUE に設定するとライティングが有効になり (デフォルト)、FALSE を設定すると無効になる。
アプリケーションで頂点バッファを使用する場合は、処理は少しだけ異なるが、次のように簡単である。IDirect3DVertexBuffer7::ProcessVertices または IDirect3DVertexBuffer7::ProcessVerticesStrided メソッドを呼び出すときに D3DVOP_LIGHT フラグを指定するかどうかで、頂点バッファに対してライティングを有効または無効にする。
デフォルトでは、Direct3D は、すべての頂点に対してライティング計算を実行する。この計算は、頂点法線を持たない頂点に対しても実行される。ただし、D3DRENDERSTATE_LIGHTING レンダリング ステートを使用してライティングを無効にできる。Direct3DDevice7.SetRenderState メソッドを呼び出して、第 1 パラメータとして D3DRENDERSTATE_LIGHTING を渡し、第 2 パラメータとして True または False を渡す。ステートを TRUE に設定するとライティングが有効になり (デフォルト)、FALSE を設定すると無効になる。
アプリケーションで頂点バッファを使用する場合は、処理は少しだけ異なるが、次のように簡単である。Direct3DVertexBuffer7.ProcessVertices メソッドを呼び出すときに D3DVOP_LIGHT フラグを指定するかどうかで、頂点バッファに対してライティングを有効または無効にする。