3D Triangle

Direct 3D Triangle

自動生成した Direct3D のプロジェクトで、三角形を描画します。

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

プロジェクトの作成

  1. Microsoft から Direct3D tutorial が提供されているのですが、これだけではどうにもなりません。
    また幾つかのサンプルプログラムもダウンロード出来るのですが、例によって難解を極めます。 (^_^;)
    そこで次のステップとして、自動生成したプロジェクトで三角形を描画してみましょう。
    tutorial の Lesson2 三角形 と同様のプログラムです。
  2. Visual Studio を起動して Direct3Dアプリケーションを構築して下さい。
    詳細は Direct 3D のプロジェクト を参照して下さい。
    ここからの作業は、Visual Studio を終了して TEXT EDITOR で行います。
    Visual Studio でも行えるのでしょうが、私は TEXT EDITOR を愛用しています。
  3. ピクセルシェーダ(SimplePixelShader.hlsl)を修正します。
    Lesson2 のシェーダは仕様が古いようです。
    struct PixelShaderInput
    {
        float4 pos : SV_POSITION;
    };
    
    float4 main(PixelShaderInput input) : SV_TARGET
    {
        return float4(1.0f, 1.0f, 0.0f, 1.0f);
    }
    
  4. バーテックスシェーダ(SimpleVertexShader.hlsl)を修正します。
    頂点形式は、二次元座標だけです。
    model; view; projection; は必要ないのですが、今後に備えて残しています。
    cbuffer ModelViewProjectionConstantBuffer : register(b0)
    {
        matrix model;
        matrix view;
        matrix projection;
    };
    
    struct VertexShaderInput
    {
        float2 pos : POSITION;
    };
    
    struct VertexShaderOutput
    {
        float4 pos : SV_POSITION;
    };
    
    VertexShaderOutput main(VertexShaderInput input)
    {
        VertexShaderOutput vertexShaderOutput;
    
        vertexShaderOutput.pos = float4(input.pos, 0.5f, 1.0f);
    
        return vertexShaderOutput;
    }
    
  5. CubeRenderer.h を修正します。
    修正は、頂点定義の構造体だけで、このプログラムでは二次元座標で指定します。
    struct VertexPositionColor
    {
        DirectX::XMFLOAT2 pos;
    };
    
  6. CubeRenderer.cpp を修正します。
    INPUT_ELEMENT_DESC の修正です。
    頂点の形式は、二次元座標だけです。
    const D3D11_INPUT_ELEMENT_DESC vertexDesc[] = 
    {
        { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
    };
    
  7. VertexPositionColor で三角形の頂点座標を定義します。
    新しい仕様では XMFLOAT を使うようです。
    VertexPositionColor cubeVertices[] = 
    {
        XMFLOAT2(-0.5f, -0.5f),
        XMFLOAT2( 0.0f,  0.5f),
        XMFLOAT2( 0.5f, -0.5f),
    };
    
  8. 三角形の頂点 Index を定義します。
    unsigned short cubeIndices[] = 
    {
        0, 1, 2,
    };
    
  9. Update() 関数は使用しないので、下記を残して削除します。
    void DX3DApp::Update(float timeTotal, float timeDelta)
    {
        (void) timeDelta; // 未使用のパラメーター。
    }
    
  10. これでプロジェクトを起動して実行すると三角形が表示されます。
    Direct3D はなかなか厄介で、あれこれ調べながら試行錯誤を繰り返すと「どこかでミスっているらしく」 動かないこともしばしばでした。
    良く読んで慎重に作業して下さい。 (^_^;)
  11. 不明な所は Lesson2 三角形 を参照して下さい。
    うまく動いたら、三角形の色を変更してみて下さい。
    また、4角形や5角形にも挑戦してみて下さい。
    DirectX9 でも D3D で三角形を描画する を作成しています。

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