Direct3D App

Direct3D App

Direct3D のベースプロジェクトを作成します。

プロジェクトの構築は結構面倒で、圧縮形式で提供することにします。
Visual Studio Express 2012 for Windows 8 で作成したプロジェクトです。
Windows 8.1 以降では動かないようなのでアップロードを廃止します。
Direct3D Project の Down Load

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

プロジェクトの説明

  1. 自動生成を編集した Direct3D のベースプロジェクトです。
    自動生成のプロジェクトや Direct3D tutorial が実行できても、どうにもなりません。
    そこで Direct3D Application 開発の手掛かりとして、ベースプロジェクトを作成することにしました。
    ベースプロジェクトの構築は結構面倒で、圧縮形式で提供することにします。
  2. ページ先頭のプロジェクト(ZIP で圧縮)をダウンロードして、実行してみて下さい。
    Direct3D のウインドウに、黄色の三角形が描画されます。
    Model.h と Model.cpp がモデル(三角形)を描画するプログラムです。
  3. モデルの頂点座標は XMFLOAT2 で定義しています。
    また Shader は Lesson2.Triangles のものを使っています。
    Direct3D tutorial の Shader を使うときは、ソリューションエクスプローラから Shader を右クリックして、 プロパティから「エントリーとバージョン」を設定して下さい。


  4. 同様のプログラムを下記のページに掲載しています。
    これらのプログラムを比較して「些細なことを除いて本筋を理解」して下さい。 (^_^;)
    Lesson2 三角形
    Direct 3D Triangle
    D3D で三角形を描画する

立方体を描画

  1. このベースプロジェクトで立方体を回転しながら描画します。
    とは言っても、自動生成では立方体を回転しながら描画していたので、元に戻すだけなのですが。 (^_^;)
    この操作を通じて、基本的に自動生成と相違が無いことを確認して、次のステップに備えて下さい。
  2. 三角形の描画は二次元座標ですが、立方体では三次元座標を定義します。
    また各頂点には Color を設定します。
    struct VertexPosition
    {
        DirectX::XMFLOAT3 pos;
        DirectX::XMFLOAT3 color;
    };
    
  3. 頂点座標の形式定義です。
    const D3D11_INPUT_ELEMENT_DESC vertexDesc[] = 
    {
        { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0,  D3D11_INPUT_PER_VERTEX_DATA, 0 },
        { "COLOR",    0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
    };
    
  4. 立方体の8個の頂点座標を定義します。
    VertexPosition cubeVertices[] = 
    {
        {XMFLOAT3(-0.5f, -0.5f, -0.5f), XMFLOAT3(0.0f, 0.0f, 0.0f)},
            ・
            ・
            ・
        {XMFLOAT3( 0.5f,  0.5f,  0.5f), XMFLOAT3(1.0f, 1.0f, 1.0f)},
    };
    
  5. ポリゴンが裏向かないように順番を考慮して頂点 Index を定義します。
    unsigned short modelIndices[] = 
    {   0,2,1,    1,2,3,
            ・
            ・
            ・
        1,3,7,    1,7,5,
    };
    
  6. Update() 関数でモデルを回転して下さい。
    Shader もモデルに合ったものを使用しなければなりません。
    自動生成のプロジェクトからコピーして下さい。
    Shader の説明は Direct3D 9 での HLSL シェーダーの記述 を参照して下さい。
    説明が足らない所は、自動生成のプロジェクトを参考にして下さい。
    元々、自動生成から作成したプロジェクトを、元に戻すだけなのですから。 (^_^;)
  7. 自動生成のように、立方体を回転しながら描画できたでしょうか。
    同様のプログラムが Lesson3 立方体 に掲載されています。
    DirectX9 でも 頂点座標の Index を使って BOX を描画する を掲載しています。
    DirectX10 でも 立方体を回転しながら描画する を掲載しています。

超初心者のプログラム入門(DirectX Store)