トップページ > 記事閲覧
グラフィックハンドルの復元について
名前:SweetBlack 日時: 2014/01/18 17:44

いつもお世話になっております。 さっそくですが質問させていただきます。 SetRestoreGraphCallbackの解説に >このとき、グラフィックハンドルが持つ画像の情報は失われてしまいます。 とあります。 この失われる画像情報というのはどこまでと考えればいいのでしょうか。 画像データが全てメモリ上から消去され、グラフィックハンドルも全てリセットされた、と考えていいのでしょうか? と、言いますのは、画像を復帰させる処理で、消える前に使っていたグラフィックハンドルを順次DeleteGraphしながら再ロード、とすると たまたま消える消える前に指定されたグラフィックハンドルが新たに読み込み済みのグラフィックハンドルとかぶってしまった場合、 せっかく復元した画像をDeleteしてしまう事になる恐れがあるのでは、と思ったからです。 またグラフィックハンドルの登録には上限数が30000といくらかと決まってるはずですので 消える前に使われたグラフィックハンドルが残ったまま、新たに登録しなおすと上限値を超えるかも、という不安もあります。 まさかそんな事はないだろうとは思いますが、念の為に確認させて頂きたいです。 よろしくお願い致します。
メンテ

Page: 1 |

Re: グラフィックハンドルの復元について ( No.1 )
名前:管理人 日時:2014/01/19 20:14

> この失われる画像情報というのはどこまでと考えればいいのでしょうか。 「このとき、グラフィックハンドルが持つ画像の情報は失われてしまいます。」のくだりは Direct3DDevice9 を使用して作成した Direct3DTexture9 が全て破棄されることを指しています Direct3DTexture9 が破棄されるだけで、グラフィックハンドルは削除されません ( なので「『グラフィックハンドルが持つ画像の情報』は失われてしまいます」としています、  グラフィックハンドルが無くなる場合は「このとき、グラフィックハンドルは全て削除されます」  という表現にすると思います ) > と、言いますのは、画像を復帰させる処理で、消える前に使っていたグラフィックハンドルを順次DeleteGraphしながら再ロード、とすると > たまたま消える消える前に指定されたグラフィックハンドルが新たに読み込み済みのグラフィックハンドルとかぶってしまった場合、 > せっかく復元した画像をDeleteしてしまう事になる恐れがあるのでは、と思ったからです。 以下のような状況の場合、読み込んだ画像を直後に削除してしまうことになります 1.グラフィックハンドルAの値が変数Bと変数Cに代入されている 2.変数Bの値を DeleteGraph に渡して呼び出し、グラフィックハンドルAを削除する   この時点で変数BとCに入っているグラフィックハンドルAの値は無効になる 3.変数Bに新たに LoadGraph で読み込んだ画像のグラフィックハンドルDの値を代入する、   << この新たなグラフィックハンドルDの値は、偶然削除したグラフィックハンドルAの値と同じだったとします     ( そうなる可能性はかなり低いですが、0ではありません ) >>   この時点で、変数BとCには新しいグラフィックハンドルDの値( 削除したグラフィックハンドルAの値と同じ )が入っています 4.変数Cの値を DeleteGraph に渡して呼び出し、グラフィックハンドルDが削除される   ( グラフィックハンドルDの値は削除したグラフィックハンドルAの値と同じであるため ) 5.変数Cに新たに LoadGraph で読み込んだ画像のグラフィックハンドルEの値を代入する   これによって、変数Bには削除されたグラフィックハンドルDの値が入っていることになり、   描画関数に渡してもエラーになります
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存