DirectXのデバッグについて
DirectXで、フルスクリーン使用時にデバッグを実行すると
ハングアップしてしまいます。 (^^;)
でも、SetDisplayMode( 640, 480, 16 ); この関数の所までなら
デバッグを起動することが出来ました。
それ以降の処理で、エラーが出た時( 例えば Blt時 )
HRESULT dx_err;
BOOL Draw(void)
{
dx_err = lpBackBuffer->Blt();
if( dx_err != DD_OK ){
return FALSE;
}
return TRUE;
}
こういう感じにしておくと、かなり対処できると思います。
もっといい方法は、次の関数を用意します。
char err_mes[512];
BOOL b_err = FALSE;
void RegError(char *err){
sprintf( err_mes, "%s\n", err );
b_err = TRUE;
PostMessage( hWnd, WM_CLOSE ,0 ,0 );
}
BOOL Draw(void)
{
dx_err = lpBackBuffer->Blt();
if( dx_err != DD_OK ){
RegError("Draw()関数のBltでエラーが発生しました");
return FALSE;
}
return TRUE;
}
WndProc( HWND hWnd, UINT message, ???, ???)
{
switch (message)
{
case WM_DESTROY:
if( b_err )
MessageBox( NULL, err_mes, "エラー", MB_OK );
CleanUp(); // lpDDやBackBufferを解放
break;
}
}
これだけすれば、フルスクリーンのデバッグも簡単になり
しかも、ハングアップをかなり防げます。