ティーポットを描画する

ティーポットのメッシュを生成して回転しながら描画します。
また空のプロジェクトから作成する方法も、これを機会に一度整理しておきましょう。

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

プログラムの説明

  1. MyD3D Class でティーポットを描画するでは MyD3D Class を使いましたが、今回は使わずにプログラムします。
    ティーポットを描画するソースプログラム Main.cpp です。
    ファイル名 説明
    Main.cpp ティーポットを描画
  2. 空のプロジェクトから作成します。
    1. Visual C++ を起動します。
      [ファイル][新規作成][プロジェクト]を選択すると新しいプロジェクトのウインドウが表示されます。
    2. [プロジェクトの種類]から[Visual C++ プロジェクト]を、[テンプレート]から[Win32 プロジェクト]を選択します。
    3. プロジェクト名は後から自由に変更出来るので、とりあえず "Main"にして、 プロジェクトを作成するフォルダーを選んで下さい。
    4. [Win32アプリケーションウイザード]から[空のプロジェクト]をチェックして作成して下さい。
      完了ボタンをクリックすると、選んだフォルダーに "Main" のプロジェクト(フォルダー)が作成されます。
      ここにソースプログラム(Main.cpp)を格納して下さい。
    5. [プロジェクト][既存項目の追加]からMain.cppを選択してプロジェクトに取り込んで下さい。
    6. [プロジェクト][Mainのプロパティ]から[構成プロパティ][全般]を選び、 文字セットに[マルチバイト文字セットを使用する]を選択して下さい。
    7. このあと、[プロジェクト][Mainのプロパティ]から[構成プロパティ][リンカ][入力][追加の依存ファイル] からDLLを追加するのですが、Main.cpp では #pragma で取り込んでいるので、この操作は不要です。
    8. ビルドから実行を選ぶと、コンパイルに続いて実行が行われます。
    9. プロジェクトに必須のファイルは Main.vcproj と Main.cpp だけで、後のファイルは削除することが出来ます。
      またプロジェクト名(Main)も自由に変更することが出来ます。
  3. プログラムは DirectX9 でこれまで説明したものと同じなので、詳しいことはそちらを参照して下さい。
    プログラムを起動したときのティーポットの色は白ですが、キーの操作で Emissive を変更できます。
    テンキーの 7.4.1, 9,6,3 で色が変わるので試してみて下さい。
    void KeyCheck()
    {   u_char      KeyBuffer[256];
        D3DXVECTOR3 v;
    
        // キーボードの状態を読み取る
        GetKeyboardState(KeyBuffer);
        if (KeyBuffer[VK_ESCAPE]&0xf0)          //ESC
        {   PostMessage(g_hWnd,WM_CLOSE,0,0);   //WM_CLOSE をポスト
            return;
        }
        if (KeyBuffer[VK_NUMPAD7]&0xf0)   material.Emissive.r-= COR;
        if (KeyBuffer[VK_NUMPAD4]&0xf0)   material.Emissive.g-= COR;
        if (KeyBuffer[VK_NUMPAD1]&0xf0)   material.Emissive.b-= COR;
        if (KeyBuffer[VK_NUMPAD9]&0xf0)   material.Emissive.r+= COR;
        if (KeyBuffer[VK_NUMPAD6]&0xf0)   material.Emissive.g+= COR;
        if (KeyBuffer[VK_NUMPAD3]&0xf0)   material.Emissive.b+= COR;
    }
    
  4. D3DXCreateTeapot() でティーポットを生成します。
        //ティーポットの生成
        D3DXCreateTeapot(g_p3DDev,&pMeshApp,NULL);
        
  5. World 座標をY軸を中心に自動的に回転しながら描画します。
        //World 座標をY軸を中心に自動回転
        D3DXMatrixRotationY(&matWorld,timeGetTime()/1000.0f);
        g_p3DDev->SetTransform(D3DTS_WORLD,&matWorld);
        

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

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