D3DLIGHT7
D3DLIGHT7 構造体は、ライト プロパティのセットを定義する。この構造体は IDirect3DDevice7::GetLight および IDirect3DDevice7::SetLight メソッドで使用される。
typedef struct _D3DLIGHT7 {
D3DLIGHTTYPE dltType;
D3DCOLORVALUE dcvDiffuse;
D3DCOLORVALUE dcvSpecular;
D3DCOLORVALUE dcvAmbient;
D3DVECTOR dvPosition;
D3DVECTOR dvDirection;
D3DVALUE dvRange;
D3DVALUE dvFalloff;
D3DVALUE dvAttenuation0;
D3DVALUE dvAttenuation1;
D3DVALUE dvAttenuation2;
D3DVALUE dvTheta;
D3DVALUE dvPhi;
} D3DLIGHT7, *LPD3DLIGHT7;
メンバ
- dltType
- 光源の型。この値は D3DLIGHTTYPE 列挙型のメンバのいずれかである。
- dcvDiffuse
- 光源が放出するディフーズ色。このメンバは D3DCOLORVALUE 構造体である。
- dcvSpecular
- 光源が放出するスペキュラ色。このメンバは D3DCOLORVALUE 構造体である。
- dcvAmbient
- 光源が放出するアンビエント色。このメンバは D3DCOLORVALUE 構造体である。
- dvPosition
- ワールド空間での光源の位置座標。このメンバは、ディレクショナル ライトにおいては意味がなく、このケースでは無視される。
- dvDirection
- ワールド空間で光が指す方向。このメンバは、ディレクショナル ライトおよびスポット ライトの場合にのみ意味を持つ。このベクトルは正規化する必要はないが、ゼロでない長さを持たねばならない。
- dvRange
- 光源の有効距離。このメンバの最大許容値は D3DLIGHT_RANGE_MAX で、FLT_MAX の平方根として定義される。このメンバはディレクショナル ライトには影響しない。
- dvFalloff
- スポット ライトの内部コーン (dvTheta で指定される角度) と外部コーンの外側エッジ (dvPhi で指定される角度) との間で輝度がフォールオフする。この機能は、DirectX 5.0 には実装されていない。dvFalloff の値によるスポット ライトの変化の詳細については、「スポット ライト フォールオフ モデル」を参照すること。
ライティングに対するフォールオフの影響は微妙である。さらに、フォールオフ曲線を描くと多少の性能上のロスを被る。これらの理由により、多くの開発者はこの値を 1.0 にセットする。
- dvAttenuation0、dvAttenuation1、および dvAttenuation2
- 光の輝度が距離によってどのように変化するかを指定する値 (ディレクショナル ライトは減衰しない)。これらのメンバは減衰定数を表す。これらの減衰値による光の変化の詳細については、「距離の増加によるライトの減衰」を参照すること。これらのメンバに有効な値の範囲は 0.0 から無限大である。
- dvTheta
- スポット ライトの内部コーン、つまり十分に光で照らされているスポット ライト コーンの角度をラジアン単位で表す。この値は、0 から dvPhi による指定値の範囲になければならない。
- dvPhi
- スポット ライトの外円錐の外側のエッジを定義する角度をラジアン単位で表す。この円錐の外側にある点はスポット ライトでライティングされない。この値は 0 から pi の範囲になければならない。
注意
DirectX 7.0 で導入されたこの構造体は、旧バージョンの DirectX で使用された D3DLIGHT2 および D3DLIGHT 構造体に代わって使用される。
この構造体が D3DLIGHT2 構造体と異なるのは、ライトのディフーズ色、スペキュラ色、およびアンビエント色を個々にメンバに指定する点である。各カラー値は、Direct3D 直接モードのライティング モジュールでシーンのライティングを決定する際に使用される。
Windows NT/2000 :Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
バージョン :DirectX 7.0 が必要。
ヘッダー : d3dtypes.h で宣言。
参照
IDirect3DDevice7::GetLight、IDirect3DDevice7::SetLight、D3DLIGHTTYPE、ライティングとマテリアル