今日一日丸々使って調べたり実験してみたりしてみたけど、
ぜんぜんうまくいかない。
デバイスロストのタイミングなんかはまあよい。
Present() == D3DERR_DEVICELOST
で
TestCooperativeLevel() == D3DERR_DEVICENOTRESET
から
Reset
を実行すればよいだけの話のはずだ。
しかしうまくいかない。
現状はClearが動くだけでDrawPrimitiveUPなんかが正しく動かず、何も表示されない。
エラーも返ってきていない。
Clearが動くのだからデバイス処理は間違ってはいないはず。
何か忘れてるのか?
テクスチャなんかはD3DPOOL_MANAGEDだから
読み込み直す必要は無い。
そもそも読まないといけないデータがあれば、
読み込む前に解放処理をしないとResetが失敗するはずだ。
PCの仕様か、と思いきやほかのソフトでは何の問題も無いのだから、
自分のプログラムが悪いのは明白。
一応Reset以外の方法を。ということで
Direct3DDeviceを作り直す方法、
それからDirect3Dから作り直す方法の2つをためしてみたが、
結果は相変わらずだった。何かし忘れている線が濃厚だが、さっぱりだ。
埒が明かないので、DirectXSDKをバージョンアップしてみる。他力本願作戦だ。
ちなみに現在使用しているバージョンは2005December。
今から入れようとするのは2007Novemberだ。
何にもかわらなかった。
しかたなく2007Novemberを殺した。
0 件のコメント:
コメントを投稿