Tutorial-02

Tutorial-02 で三角形を描画します。

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

Tutorial02

  1. Sample Brower で作成した Tutorial02 のプロジェクトを Visual Studio 2005 で動かします。
    Tutorial02 と Tutorial03 は同じ手順で実行出来ます。
    プロジェクトのフォルダーから、次のファイルを残して削除して下さい。
      DXUT
      directx.ico
      Resource.h
      Tutorial02.cpp
      Tutorial02.fx
      Tutorial02.rc
      Tutorial02_2008.vcproj
    
  2. Tutorial02 では XMFLOAT3 が使われている幾つかの行がエラーになります。
    DirectX11 の頂点座標の定義です。
    struct SimpleVertex
    {
        XMFLOAT3 Pos;
    };
    
    従来の頂点座標の定義です。
    struct SimpleVertex
    {
        D3DXVECTOR3 Pos;
    };
    
  3. XMFLOAT3 などは DirectX11 から使われ始めた3Dレンダリングのデータ形式で下記のヘッダーファイルで定義されています。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\xnamath.h
    このヘッダーファイルが曲者で、Visual Studio 2005 でコンパイルするとエラーになります。
    修正を試みたのですがエラーが解消されません。
    そこで xnamath.h を元に必要な部分だけを抽出した xnamathw.h を作成することにしました。
  4. 新しく作成した xnamathw.h です。
    プロジェクトのフォルダーに格納して下さい。
    //Module Name:    xnamathw.h
    // 2D Vector; 32 bit floating point components
    typedef struct _XMFLOAT2
    {
        FLOAT x;
        FLOAT y;
    
        _XMFLOAT2() {};
        _XMFLOAT2(FLOAT _x, FLOAT _y) : x(_x), y(_y) {};
        _XMFLOAT2(CONST FLOAT *pArray);
    
        _XMFLOAT2& operator= (CONST _XMFLOAT2& Float2);
    
    } XMFLOAT2;
    
    // 3D Vector; 32 bit floating point components
    typedef struct _XMFLOAT3
    {
        FLOAT x;
        FLOAT y;
        FLOAT z;
    
        _XMFLOAT3() {};
        _XMFLOAT3(FLOAT _x, FLOAT _y, FLOAT _z) : x(_x), y(_y), z(_z) {};
        _XMFLOAT3(CONST FLOAT *pArray);
    
        _XMFLOAT3& operator= (CONST _XMFLOAT3& Float3);
    
    } XMFLOAT3;
    
    // 4D Vector; 32 bit floating point components
    typedef struct _XMFLOAT4
    {
        FLOAT x;
        FLOAT y;
        FLOAT z;
        FLOAT w;
    
        _XMFLOAT4() {};
        _XMFLOAT4(FLOAT _x, FLOAT _y, FLOAT _z, FLOAT _w) : x(_x), y(_y), z(_z), w(_w) {};
        _XMFLOAT4(CONST FLOAT *pArray);
    
        _XMFLOAT4& operator= (CONST _XMFLOAT4& Float4);
    
    } XMFLOAT4;
    
    typedef struct __vector4
    {
        union
        {
            float        vector4_f32[4];
    
            struct
            {
                FLOAT x;
                FLOAT y;
                FLOAT z;
                FLOAT w;
            } _float4;
            FLOAT v[4];
        };
    } __vector4;
    
    typedef __vector4 XMVECTOR;
    typedef const XMVECTOR FXMVECTOR;
    
    typedef struct _XMMATRIX
    {
        union
        {
            XMVECTOR r[4];
            struct
            {
                FLOAT _11, _12, _13, _14;
                FLOAT _21, _22, _23, _24;
                FLOAT _31, _32, _33, _34;
                FLOAT _41, _42, _43, _44;
            } float16;
            FLOAT m[4][4];
        };
    
        _XMMATRIX() {};
        _XMMATRIX(FLOAT m00, FLOAT m01, FLOAT m02, FLOAT m03,
                  FLOAT m10, FLOAT m11, FLOAT m12, FLOAT m13,
                  FLOAT m20, FLOAT m21, FLOAT m22, FLOAT m23,
                  FLOAT m30, FLOAT m31, FLOAT m32, FLOAT m33);
        _XMMATRIX(CONST FLOAT *pArray);
    
        FLOAT       operator() (UINT Row, UINT Column) CONST { return m[Row][Column]; }
        FLOAT&      operator() (UINT Row, UINT Column) { return m[Row][Column]; }
    
        _XMMATRIX&  operator*= (CONST _XMMATRIX& M);
        _XMMATRIX   operator* (CONST _XMMATRIX& M) CONST;
    
    } XMMATRIX;
    
    typedef const XMVECTOR FXMVECTOR;
    typedef const XMMATRIX CXMMATRIX;
    
  5. Tutorial02.cpp を修正して xnamathw.h を取り込んで下さい。
    プロジェクトのフォルダーに格納されていればプロジェクトに組み込む必要はありません。
    //#include <xnamath.h>
    #include "xnamathw.h"
    
  6. Tutorial02_2008.vcproj の次の行を Version="8.00" に修正します。
    <VisualStudioProject ProjectType="Visual C++" Version="9.00"
  7. Tutorial02_2008.vcproj から起動して、Release Mode でコンパイル&実行します。
    ウインドウに三角形が描画されます。
    Visual Studio 2005 を終了して、終了時に .sln を保存して下さい。
  8. 最初コンパイルしたときは「asm.v3」の警告が表示されることがあります。
    Release Mode でコンパイルして Release フォルダーが作成されると警告は出なくなります。
    次回からは .sln をダブルクリックして起動して下さい。

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