Microsoft DirectX 8.0 (C++)

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::GetLightIDirect3DDevice8::SetLight