ページ 1 / 1
DirectXで・・・
Posted: 2010年1月21日(木) 21:06
by KA
DirectX9のプログラミングの勉強をしているのですが、フルスクリーンとウィンドウモードの切り替えがどうしてもうまくいきません。
ネットであちこち探し回っているうちにわからなくなってきたのですが、Resetメソッドを呼び出した後にCreateDevice関数を呼ばないといけないんですか?
Re:DirectXで・・・
Posted: 2010年1月22日(金) 05:59
by kazuoni
・現在どの様に記述していて(コード掲載)
・どの様な動作を期待しているが
・現在はこの様にしか動かない
を補足してください。
Re:DirectXで・・・
Posted: 2010年1月22日(金) 20:13
by KA
いまいち頭の中で整理できていない状態で質問してしまいました。すいません。
LPDIRECT3D9 Dx3D_9;
D3DPRESENT_PARAMETERS Dx3D_PP;
LPDIRECT3DDEVICE9 Dx3D_9Dev;
D3DDISPLAYMODE Dx3D_9Disp;
//以上は初期化済み
//while内・Clear,BeginSceneメソッド実行後
if(CheckKeyState(KEY_INPUT_W)==1)
{
//リソース開放処理(作ってないので無記述)
//以下の関数でDx3D_PPに値を代入します。(ウィンドウ初期化時にも使用・FALSEはフルスクリーンフラグです)
Init_PRESENT_PARAMETERS(Dx3D_PP,Window_size_X,Window_size_Y,FALSE,Dx3D_9Disp);
while(Dx3D_9Dev->Reset(&Dx3D_PP)==D3DERR_DEVICELOST)
{
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(FAILED(Dx3D_9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,&Dx3D_PP,&Dx3D_9Dev)))
{
MessageBox(NULL,"エラー","DirectX9Error",MB_ICONERROR);
break;
}
//リソース作成処理(作ってないので無記述)
}
以上のコードでフルスクリーンとウィンドウの切り替え(上のコードではデバックのためウィンドウからフルスクリーンのみ)の動作を望んでいるのですが、CreateDeviceでエラーが出ます。
デバイスロスト時の復帰プログラムを改造(Init_PRESENT_PARAMETERSの追加)しただけです。
しかし、こっちのソースではエラーが出てしまいます。(復帰は成功)
