D3DLIGHT8
一連のライト プロパティを定義する。
typedef struct _D3DLIGHT8 {
D3DLIGHTTYPE Type;
D3DCOLORVALUE Diffuse;
D3DCOLORVALUE Specular;
D3DCOLORVALUE Ambient;
D3DVECTOR Position;
D3DVECTOR Direction;
float Range;
float Falloff;
float Attenuation0;
float Attenuation1;
float Attenuation2;
float Theta;
float Phi;
} D3DLIGHT8;
メンバ
- Type
- 光源の型。この値は D3DLIGHTTYPE 列挙型のメンバのいずれかである。
- Diffuse
- 光源が放出するディフューズ色。このメンバは D3DCOLORVALUE 構造体である。
- Specular
- 光源が放出するスペキュラ色。このメンバは D3DCOLORVALUE 構造体である。
- Ambient
- 光源が放出するアンビエント色。このメンバは D3DCOLORVALUE 構造体である。
- Position
- ワールド空間内での光源の位置。D3DVECTOR 構造体で指定される。このメンバは、ディレクショナル ライトにおいては意味がなく無視される。
- Direction
- ワールド空間で光が指す方向。D3DVECTOR 構造体で指定される。このメンバは、ディレクショナル ライトおよびスポット ライトの場合にのみ意味を持つ。このベクトルは正規化する必要はないが、ゼロでない長さを持たねばならない。
- Range
- 光源の有効距離。このメンバの最大許容値は FLT_MAX の平方根である。このメンバはディレクショナル ライトには影響しない。
- Falloff
- スポット ライトの内部コーン (Thetaで指定される角度) と外部コーンの外側エッジ (Phi で指定される角度) との間で輝度がフォールオフする。
ライティングに対するフォールオフの影響は微妙である。さらに、フォールオフ カーブを描くと多少の性能上のロスを被る。これらの理由により、開発者の多くはこの値を 1.0 に設定する。
- Attenuation0、Attenuation1、および Attenuation2
光の輝度が距離によってどのように変化するかを指定する値。 ディレクショナル ライトの場合、減衰値は無視される。これらのメンバは減衰定数を表す。減衰については、「距離の増加によるライトの減衰」を参照すること。これらのメンバに有効な値の範囲は 0.0 から無限大である。ディレクショナル ライト以外の場合、3 つの減衰値すべてを同時に 0.0 に設定してはならない。
- Theta
- スポット ライトの内部コーン、つまり十分に光で照らされているスポット ライト コーンの角度をラジアン単位で表す。この値は、0 から Phi による指定値の範囲になければならない。
- Phi
- スポット ライトの外円錐の外側のエッジを定義する角度をラジアン単位で表す。この円錐の外側にある点はスポット ライトでライティングされない。この値は 0 から pi の範囲になければならない。
ヘッダー : D3d8types.h で宣言。
参照
IDirect3DDevice8::GetLight、IDirect3DDevice8::SetLight