Win8+DX10

Windows8+DirectX10

Windows8 + DirectX10 のプロジェクトを実行します。

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

プロジェクトの説明

  1. 2014/08 Windows 8.1 デスクトップモードで DirectX を動かしてみました。
    Windows 8.1 ですがストアアプリでは無いので念のため。
    ストアアプリの DirectX は 超初心者のプログラム入門(DirectX Windows8) を参照して下さい。
  2. Sample Brower で構築した DirectX10 のプロジェクトを実行すると次のエラーが表示されます。
    Failed create the Direct3D device
    
    おなじように構築した DirectX9 のプロジェクトは問題なく動くのですが。 (^_^;)
    最もシンプルな Tutorial のプロジェクトも同じエラーで終了します。
    (但し Tutorial00 だけは DirectX を使っていないので正常に実行されます。)
    以前に vista(XP?)で作成した 空のプロジェクトから構築する も同じエラーが表示されます。
    Windows8 の環境では DirectX10 は動かない」とあきらめたらそれで済んだのかも知れません。
  3. Sample Brower から DirectX10 の実行形式(.exe)を選ぶと実行されるので、何か方法があるのではと調べてみた所、MultiMon10 だけが動くことが解りました。
    そこで MultiMon10 と他のプロジェクトとの違いを調べてみました。
    Sample Brower で構築したプロジェクトは ID3D10Device* を取得するのに DXUT を使っているのに対して、MultiMon10 は独自のソースコードが書かれていました。
    どうやら私は「またしても泥沼に足を踏み入れる」ことになりそうです。 (^_^;)

原因と対策

  1. あれこれ調べてみた所、原因らしきものに突き当たりました。 (^_^;)
    Sample Brower から構築したプロジェクトを Release Mode でコンパイルしてみて下さい。
    Tutorial を始め、テストしたプロジェクトが正常に実行されました。
  2. Tutorial のプロジェクトでは、InitDevice() 関数の次の行をコメントアウトして下さい。
    Debug Mode のフラグがリセットされて、正常に実行されるはずです。
    //#ifdef _DEBUG
    //    createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
    //#endif
    
  3. DXUT が組み込まれたプロジェクトの場合も Release Mode でコンパイルしてみて下さい。
    正常に実行されるときは、次の修正を行うと Debug Mode でも実行出来るはずです。
    DXUT.cpp の DXUTCreate3DEnvironment10() 関数の CreateFlags を 0 に書き換えて下さい。
        hr = DXUT_Dynamic_D3D10CreateDevice( pAdapter,
            pNewDeviceSettings->d3d10.DriverType,
            pNewDeviceSettings->d3d10.CreateFlags,  ⇒  0,
            NULL, D3D10_SDK_VERSION, &pd3dDevice );
    
  4. 一時は諦めかけていたのですが、どうやらこれで DirectX10 のプロジェクトも動きそうです。 \(^o^)/

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