DirectXで・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KA

DirectXで・・・

#1

投稿記事 by KA » 15年前

DirectX9のプログラミングの勉強をしているのですが、フルスクリーンとウィンドウモードの切り替えがどうしてもうまくいきません。

ネットであちこち探し回っているうちにわからなくなってきたのですが、Resetメソッドを呼び出した後にCreateDevice関数を呼ばないといけないんですか?

kazuoni

Re:DirectXで・・・

#2

投稿記事 by kazuoni » 15年前

・現在どの様に記述していて(コード掲載)
・どの様な動作を期待しているが
・現在はこの様にしか動かない

を補足してください。

KA

Re:DirectXで・・・

#3

投稿記事 by KA » 15年前

いまいち頭の中で整理できていない状態で質問してしまいました。すいません。
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の追加)しただけです。
しかし、こっちのソースではエラーが出てしまいます。(復帰は成功) 画像

閉鎖

“C言語何でも質問掲示板” へ戻る