トップページ > 過去ログ > 記事閲覧
デバイスロストの検出
名前:クラスクラス 日時: 2011/03/09 00:44

 当方、ソフトイメージの編集後画像イメージにして出力していますが。 当然のことながら、デバイスロスト時に復帰が出来ません。 DXLibで復帰する分は、そのままお願いして。こちらで作ってる部分のみ再生したいと考えています。 その為には、デバイスロストが発生したのを検出する方法はありませんか? 例えば、DXLibで再生した後コールバックされる関数。 又は、フラグを検出(取り出)して、処理後クリアする関数をコール等の インターフェースは有りませんでしょうか? よろしくお願いいたします。

Page: 1 |

Re: デバイスロストの検出 ( No.1 )
名前:管理人 日時:2011/03/21 17:15

デバイスロストから復帰した際に呼ばれるコールバック関数を登録するための関数はすであったのですが、 それはデフォルトのDXライブラリのグラフィックハンドルの画像情報復帰処理を行う関数の代わりになる関数を 登録するという機能なので、DXライブラリのデフォルトの復帰処理関数も実行して、且つそれとは別に グラフィックスデバイスロストから復帰した際に呼ばれるコールバック関数を登録するための機能を追加しました よろしければこちらのバージョンをダウンロードしてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 以下の関数を追加しました // グラフィックスデバイスがロストから復帰した際に呼ばれるコールバック関数を設定する int SetGraphicsDeviceRestoreCallbackFunction( void (* Callback )( void *Data ), void *CallbackData ) ; 第一引数は戻り値が無く、void 型のポインタを一つ引数に取る関数のポインタを 第二引数はコールバック関数の第一引数に渡すポインタを渡します 第二引数はコールバック関数の第一引数として渡されるだけですので、不要であれば NULL を指定してください // コールバック関数の例 void CallbackFunction( void *Data ) { // グラフィックハンドルの復帰処理 } // コールバック関数を登録 SetGraphicsDeviceRestoreCallbackFunction( CallbackFunction, NULL ) ; 登録を解除する場合は第一引数に NULL を渡してください
Re: デバイスロストの検出 ( No.2 )
名前:クラスクラス(解決) 日時:2011/03/22 23:39

お忙しい中、お返事ありがとうございます。 コールバック関数を作って頂き、とてもありがとうございます。 はい、デバイスロストから復帰した際に呼ばれるコールバック関数はしっていたのですが。 総て自分でやるものだったので、今回のようなお願いをいたしました。 いま、2D部分を大幅に作っているので、検証作業はちょっと後になると思います。申し訳ありません。 また、サンプルデータの配布の件ですが、現時点では配布が不要になってしまったので、 配布できていませんでした。こちらもお返事遅くなって申し訳ありません。  作っている物を管理人様にお見せできるといいのですが、個人で作るのは大規模プログラムになってしまったので。 初期バーション完成には、まだまだ時間がかかりそうです。  作っていく上で、色々な事がでてくると思います。懲りずによろしくお願いいたします。
Re: デバイスロストの検出 ( No.3 )
名前:いっち 日時:2011/05/05 13:54

別件で SetGraphicsDeviceRestoreCallbackFunction を少し使ってみたのですが、 コールバックの呼ばれるタイミングは SetRestoreGraphCallback とほぼ同じようでした。 (SetRestoreGraphCallback + ReloadFileGraphAll) を使用するのと SetGraphicsDeviceRestoreCallbackFunction を使用するのでは、 実質的にコールバックに渡すことが出来る変数の有無以外無いのでしょうか?
Re: デバイスロストの検出 ( No.4 )
名前:管理人 日時:2011/05/08 02:19

> (SetRestoreGraphCallback + ReloadFileGraphAll) を使用するのと SetGraphicsDeviceRestoreCallbackFunction を使用するのでは、 > 実質的にコールバックに渡すことが出来る変数の有無以外無いのでしょうか? はい、その通りです
Re: デバイスロストの検出 ( No.5 )
名前:いっち(解決) 日時:2011/05/10 18:45

ご回答ありがとうございます。 了解しました。 ※どなたかのお役に立つかもしれないので、検証結果を追記しておきます。 SetChangeScreenModeGraphicsSystemResetFlag に FALSE 設定した場合、 SetUseASyncChangeWindowModeFunction のコールバック呼び出し発生時や 動機的に ChangeWindowMode を行った場合も SetGraphicsDeviceRestoreCallbackFunction の コールバックが呼び出されるようです。SetUseGraphBaseDataBackup の値には影響されないようでした。

Page: 1 |