スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

デバイスロスト・復元 

DirectXで面倒くさい処理の一つだと思われる、
デバイス消失時の処理を作っていました。

やらなければいけない事として、とりあえずデバイスの状態をチェックして、
復元できるならID3DDEVICE::Reset(&プレゼンテーションパラメータ)を呼ぶ。
これだけで済めば非常にありがたいのですが、残念ながらDirectXはもっと色々します。

まず、デバイス関連のオブジェクトがあればそれを解放する事。
現在のライブラリでD3DXFont使ってるので、そいつを解放・復元する。
まぁ、これはOnLostDevice(),OnResetDevice()用意されてるんで、呼ぶだけ。

次に、かなり頭の痛い要素、テクスチャの解放
POOL_MANAGEDなら解放の必要はありません、でも、それだとテクスチャに書けなかったりするんですよねー。
そんなわけで、退避用のテクスチャを作成して、コピーしてやります。
そして今まで使っていた方を解放、復元できたら、コピーで戻す。
ぶっちゃけ、かなりこれが嫌いでした_no

そして、今回新たに頭の痛い要素が追加されました。
前回は完全に2Dライブラリだったので気にしなかった部分。
それは、レンダリングステートの設定
これ、デバイスロストすると、設定が全部失われるんですよね。
そんなわけで、復元後に再設定するだけなんですが、

「さて、αブレンドとか再設定しますか」


「…あれ?」


「今までに設定した値どうやって再設定すればいい?(;´д`)」

初期値を決めて、それに初期化なら楽だったでしょう。
でも、ゲーム中で変えられたパラメータに全てを戻すのはどうするのかと。
まぁ、結局全て保持するしかないじゃん、となりました('A
DirectX側で保存しといてくれれば、どんなに楽だったか_no
デバイスとは別に保存されてて、消失しても、そこからgetで取れるとかなら…
愚痴ってもしょうがないので、現在その辺製作中です。


今日は一日デバイス関連やってたなー。
スポンサーサイト

[ 2006/06/10 23:59 ] ライブラリ開発 | TB(0) | CM(0)
コメントの投稿














管理者にだけ表示を許可する
プロフィール

poro

  • Author:poro
  • プログラマやってる人です。
    絵とかも好きだったり、
    何か作りたいとか最近考えているらしい。
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。