//メインループ
void Roop(void (*GameFunc)() )
{
//初期化
ZeroMemory(&msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
//画面クリーン
pDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(55,255,255), 1.0f, 0 );
//メイン処理
GameFunc();
//デバイスロストしてたら対応
if( pDevice->Present( NULL, NULL, NULL, NULL ) == D3DERR_DEVICELOST)
{
DeviceLost();
}
}
}
}
//デバイスロスト対応
void DeviceLost()
{
//ダメならまたループ
if(pDevice->TestCooperativeLevel() == D3DERR_DEVICELOST)
{
return;
}
//復帰できる場合
//1.リソースの解放
ResourceAllRelease();
//2.デバイスリセット(戻り値が D3D_OK 以外の場合、復元出来ないので終了)
if(pDevice->Reset(&d3dpp) != D3D_OK)
{
DebugBox("デバイスのリセットに失敗しました");
PostQuitMessage(0);
return;
}
//3.リソースの再生成
ResourceAllReload();
}
d3dppはグローバル変数として既に設定されています。というか、怪しかったので新しく作ってそれをReset()に渡すということもしてみましたが、それでもダメでした。
リソースの解放に漏れはありませんでした。まだ作り始めたばかりでリソースはスプライトとテクスチャしかなく、何度確認してもその二つとも解放しています。
どなたかわかる方よろしくお願いします。