Full Screen Mode で View 座標を回転する

Full Screen Mode で表示するだけなら InitD3D(&g_pDEV) に代えて InitD3DFull(&g_pDEV) を呼ぶだけです。
余りにも簡単なので View 座標を回転しながらティーポットを表示します。
正面左上から光源で照らしているので、影の様子を見ればカメラが回転していることが解かるでしょう。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. [ファイル] [新規作成] [プロジェクト]から空のプロジェクト(D3full)を作成して下さい。
    プロジェクト/既存項目の追加からプログラムファイルとヘッダファイルをプロジェクトに追加して下さい。
    myd3d.h と myd3d.cpp は Object Class Library から取得して下さい。
    ファイル名 ファイルの説明
    d3full.cpp 「プログラムの説明」を参考に作成して下さい
    myd3d.h MyD3D Object Class ヘッダファイル
    myd3d.cpp MyD3D Object Class プログラムファイル
  2. 基本的な部分は MyD3D Class でティーポットを描画する を参照して下さい。
  3. ティーポットのプログラムをフルスクリーンモードに変更するだけなら非常に簡単です。
    Windowed Mode の設定です。
    myd3d->InitD3D(&g_pDEV);
    Full Screen Mode の設定です。
    myd3d->InitD3DFull(&g_pDEV);
    D3DXCreateTorus() に設定するとティーポットの代わりにトーラスが表示されます。
        HRESULT InitGraphics(void)
        {
            myd3d= new MyD3D(g_hWnd);
            myd3d->InitD3DFull(&g_pDEV);
            //ティーポットの生成
        //    D3DXCreateTeapot(g_pDEV,&g_pMesh,NULL);
            //トーラスのメッシュを生成
            D3DXCreateTorus(g_pDEV,0.3f,0.7f,32,32,&g_pMesh,NULL);
            return  S_OK;
        }
        
  4. 描画環境を設定する関数です。
    「MyD3D Class でティーポットを描画する」では World 座標を回転していますが、今回は View 座標を回転します。
    ViewForm(0.0f,0.0f,-5.0f) が View 座標の元の座標です。
    Rotate() 関数で ViewForm を回転します。
    50.0f が回転速度を調整する値で、環境によって大きく異なります。
    速すぎるときや遅すぎるときは 5.0f ~ 1000.0f の範囲で調整して下さい。
    正面左上から光源で照らしているので、影の様子を見ればカメラが回転していることが解かるでしょう。
    g_pDEV->SetRenderState(D3DRS_AMBIENT,0x00FFFFFF) は環境光の設定です。
    g_pDEV->SetRenderState(D3DRS_AMBIENT,0x00080808) に変更して試してみて下さい。
    SetupMatrices() で毎回 Material と Light を設定してみました。
    Material や Light の状態が変わらないときは InitGraphics() 関数で設定する方が合理的です。
        void  SetupMatrices(void)
        {   RECT            rect;
            D3DXMATRIX      matWorld;
            D3DXMATRIX      matView;
            D3DXMATRIX      matProj;
            D3DXVECTOR3     VF;
    
            GetClientRect(g_hWnd,&rect);
            //View 座標をY軸を中心にして自動回転
            VF= ViewForm;
            myd3d->Rotate(&VF,&D3DXVECTOR3(0.0f,0.0f,0.0f),timeGetTime()/50.0f,1);
            //View 座標の設定
            D3DXMatrixLookAtLH(&matView,&VF,&D3DXVECTOR3(0.0f,0.0f,0.0f),&D3DXVECTOR3(0.0f,1.0f,0.0f));
            g_pDEV->SetTransform(D3DTS_VIEW,&matView);
            //透視変換の設定
            D3DXMatrixPerspectiveFovLH(&matProj,D3DXToRadian(45.0f),(float)rect.right/(float)rect.bottom,1,50);
            g_pDEV->SetTransform(D3DTS_PROJECTION,&matProj);
            g_pDEV->SetRenderState(D3DRS_AMBIENT,0x00FFFFFF);
            myd3d->SetMaterial(0.8f,0.4f,0.0f);
            myd3d->SetLight();
        }
        

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)