いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

問題解決[ドライバのバグ?]

<<今までのあらすじ>>
「GeForce2MXだと描画がおかしい!」という問題に遭遇。頂点の確認やライト・マテリアルの色を変更してみるも一向に改善されず。そのうち 「SetRenderStateがいけないのでは?」 と思い、正常描画時と異常描画時のレンダリングステートの差分を取ろうとしたのだったのだがー………

というわけで、出来ました!差分を表示してくれるコードが!
http://ir9.jp/hd/ts050304_00.png
これを見ると、どうやらブレンディングが変わっているようですねー。 まぁ、私の書いたコードにバグが無ければ…って話になるんですが…^^;
とりあえず、レンダリングステートを戻して実験してみる事にしました。 …なんか、コレだけで結果が変わるとは思えないんですが、とりあえず実験。

結果:
状態変わらず。orz
変色描画のまま
もーわけわかりません。orz
MSのライトのサンプルは正常に動いてるのになー。 …でも、Webで拾ってきたライトのサンプルは変色してる…。
…違いはなんだ…?  というわけで、調査してみるとー


IDirect3D9::CreateDeviceの第4引数 "D3DCREATE_HARDWARE_VERTEXPROCESSING" が原因でした。orz


ハードウェアで頂点処理できないんですか、ゲフォ2MXは……。いやまぁ、古いチップだからなぁ。…って、処理できないんなら、初期化に成功するなよ。orz
いやでも、D3DCAPS9::DevCaps 見ると "D3DDEVCAPS_HWTRANSFORMANDLIGHT" フラグが立ってる…。つまりはハードウェアで頂点処理できるんじゃないの?? HW T&Lに対応してるんじゃないの?? ねぇ?? _| ̄|○
それとも、私の解釈が間違ってるのかなぁ…。う〜ん。
ちなみに、"D3DCREATE_SOFTWARE_VERTEXPROCESSING" にして初期化したところ、正常に描画されるようになりました……あー。orz
http://ir9.jp/hd/ts050304_01.png

結論としては、ゲフォ2MX(ドライバ 66.93)で、HAL-T&L -> HAL -> REF の順で初期化に成功させようとするコードは危険という事でしょうか…。
つか、これドライバのバグじゃないの?ねぇ?(苦笑