2008年5月10日土曜日

ライトの設定


http://cid-8cd7cf5ea9fbca55.skydrive.live.com/self.aspx/Public/program/test080510.zip


意図通りの表示ができてなかったのを、ようやく直せた。
ライトの設定で
light.Ambient = D3DXCOLOR( 1, 1, 1, 0 );
をしていたのを
light.Ambient = D3DXCOLOR( 0, 0, 0, 0 );
に変更した。
device->SetRenderState( D3DRS_AMBIENT, D3DCOLOR_XRGB(0xff,0xff,0xff) );
とアンビエントを真っ白にしているので、
ライトのアンビエントをすべて1にしていると、
頂点カラーの設定が無意味になるようだ。
なのでライトのアンビエントを0にし、環境光の影響を受けないようにすることで解決した。
 
試してたらできた、という感じなので、どういうことかが結局良くわからん。
ライトの環境光設定ってなんぞい? ライトはライトじゃないのか。
まあ良く知らんが、何かしら計算に組み込まれている模様。
 
メッシュの表示や、頂点変換済みのポリゴンなんかは
ライトのアンビエント設定の影響がないっぽかったから、ややこしい。
ないはずはないが、目でも腐ってるんだろうかね。
 
ついでに、敵を倒したときに輪っかを表示するよう修正。
この輪っかに限らず、エフェクト系の表示はシェーダの影響を受けていない。
シェーダでレンダリングすると重くて話にならないのよねぇ。皆どうしてんだろ?
今のところ困ってないからまあいいかってな感じ。

0 件のコメント: