Platform SDK: DirectX

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 にセットする。

dvAttenuation0dvAttenuation1、および 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::GetLightIDirect3DDevice7::SetLightD3DLIGHTTYPEライティングとマテリアル