C++相談室 part31
■ このスレッドは過去ログ倉庫に格納されています
0359デフォルトの名無しさん
NGNGなのでかなり端折りますが、以下のような構造体を持つクラスがあります。
これはDirectXで用意されている構造体です。
typedef struct _D3DLIGHT9 {
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; // ポイント、ディレクショナルのとき無視
} D3DLIGHT9;
type には ポイントライト、スポットライト、ディレクショナルライトがあります。
それぞれのライトには適用されず無視される変数というのが存在しています。
パラメータの前に書いてあるメッセージがそれです。
この構造体のすべての値を変更できるように、それぞれに対してセッターを作ると
実際に使用するときに、間違って無効なパラメータを設定してしまう場合があると思います。
これを防ぐために、3つのライトそれぞれをクラス化して、無効なパラメータを設定するような
関数は省きたいと思っています。
■ このスレッドは過去ログ倉庫に格納されています