スポンサーサイト

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

【コード】デバイスロスト対応

デバイスロスト対策用に作った関数です。
D3DPOOL_MANAGED だけにしか対応していませんが、
D3DPOOL_DEFAULT で作成しているリソースがないのでこれで対応しました。

void CDEVICE::CheckDeviceLost()
{
// デバイスロスト対策
// 戻り値が D3DERR_DEVICELOST の場合、デバイスロストが発生。
// D3DPOOL_DEFAULT で生成したリソースは解放する必要ある。
// D3DPOOL_MANAGED で生成した場合は必要ない

if( m_pDev->Present(NULL, NULL, NULL, NULL) == D3DERR_DEVICELOST )
{
// デバイスの現在の協調レベルを調べる
// 戻り値が D3DERR_DEVICENOTRESET の場合はデバイスを復帰できる状態

if(m_pDev->TestCooperativeLevel() != D3DERR_DEVICENOTRESET)
return;

// デバイスのリセット
// 戻り値が D3D_OK 以外の場合、アプリケーションを終了する

if( m_pDev->Reset(&m_D3Dpp) != D3D_OK )
PostQuitMessage(0);

// レンダリングステートの初期化
this->InitRenderState();
}
}


m_pDev は LPDIRECT3DDEVICE9 型で、アプリケーションを起動したときに作成するデバイスで、
m_D3Dpp は D3DPRESENT_PARAMETERS 構造体です。
LPDIRECT3DDEVICE9::Reset() の第一引数は、アプリケーション作成時に使用したものでOKです。

最後の this->InitRenderState(); はレンダリングステートの初期化です。
ということでこんな感じでした。


これでフルスクリーン時にタスクの切り替えを行っても大丈夫のはずです。
協力して頂いた方ありがとうございます><

この記事へのコメント

トラックバック

URL :

検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。