DX8.1 ベースプロジェクト

DirectX(8.1)ベースプロジェクト

自動生成がベースの Windows 8.1 ベースプロジェクトです。

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

ベースプロジェクト

  1. Windows8 で自動生成されたプロジェクトは、Direct2D と Direct3D に分かれていました。
    所が Windows8.1 では [DirectX アプリケーション] と [DirectX アプリケーション(XAML)] に分かれています。
  2. DirectX のアプリケーションを構築するとき、余分な機能を取り除いたシンプルなプロジェクトをベースにする方法がお勧めです。
    最初に XAML が組み込まれていない Windows8.1 のベースプロジェクトを作成してみましょう。
    DirectX(8.1)3D のプロジェクトを参照して [DirectX アプリケーション] を構築して下さい。
    これをベースに3D描画機能と2D描画機能を削除して空ウインドウのプロジェクトを作成します。
  3. ソリューションエクスプローラで Content\ のフォルダに格納されている7個のファイルを削除します。
    これで Content\ のフォルダは空になります。
  4. App1Main.h を修正します。
    //#include "Content\Sample3DSceneRender.h"
    //#include "Content\SampleFtpTextRender.h"
    
        //std::unique_ptr<Sample3DSceneRenderer> m_sceneRenderer;
        //std::unique_ptr<SampleFpsTextRenderer> m_fpsTextRenderer;
    
  5. App1Main.cpp を修正します。
    App1Main::App1Main() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer = std::unique_ptr<Sample3DSceneRenderer>(
            new Sample3DSceneRenderer(m_deviceResources));
        //m_fpsTextRenderer = std::unique_ptr<SampleFpsTextRenderer>(
            new SampleFpsTextRenderer(m_deviceResources));
    
    App1Main::CreateWindowSizeDependentResources() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->CreateWindowSizeDependentResources();
    
    App1Main::Update() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->Update(m_timer);
        //m_fpsTextRenderer->Update(m_timer);
    
    App1Main::Render() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->Render();
        //m_fpsTextRenderer->Render();
    
    App1Main::OnDeviceLost() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->ReleaseDeviceDependentResources();
        //m_fpsTextRenderer->ReleaseDeviceDependentResources();
    
    App1Main::OnDeviceRestored() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->CreateDeviceDependentResources();
        //m_fpsTextRenderer->CreateDeviceDependentResources();
    
  6. この状態で空のウインドウが描画されることを確認して下さい。

XAML ベースプロジェクト

  1. XAML が組み込まれているプロジェクトも同じ要領です。
    DirectX(8.1)3D のプロジェクトを参照して [DirectX アプリケーション(XAML)] を構築して下さい。
    これをベースに3D描画機能と2D描画機能を削除して空ウインドウのベースプロジェクトを作成します。
  2. ソリューションエクスプローラで Content\ のフォルダに格納されている7個のファイルを削除します。
  3. App1Main.h を修正します。
    //#include "Content\Sample3DSceneRender.h"
    //#include "Content\SampleFtpTextRender.h"
    
        //std::unique_ptr<Sample3DSceneRenderer> m_sceneRenderer;
        //std::unique_ptr<SampleFpsTextRenderer> m_fpsTextRenderer;
        //void StartTracking() { m_sceneRenderer->StartTracking(); }
        //void StopTracking() { m_sceneRenderer->StopTracking(); }
        //bool IsTracking() { return m_sceneRenderer->IsTracking(); }
    
  4. App1Main.cpp を修正します。
    App1Main::App1Main() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer = std::unique_ptr<Sample3DSceneRenderer>(
            new Sample3DSceneRenderer(m_deviceResources));
        //m_fpsTextRenderer = std::unique_ptr<SampleFpsTextRenderer>(
            new SampleFpsTextRenderer(m_deviceResources));
    
    App1Main::CreateWindowSizeDependentResources() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->CreateWindowSizeDependentResources();
    
    App1Main::Update() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->Update(m_timer);
        //m_fpsTextRenderer->Update(m_timer);
    
    App1Main::ProcessInput() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->TrackingUpdate(m_pointerLocationX);
    
    App1Main::Render() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->Render();
        //m_fpsTextRenderer->Render();
    
    App1Main::OnDeviceLost() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->ReleaseDeviceDependentResources();
        //m_fpsTextRenderer->ReleaseDeviceDependentResources();
    
    App1Main::OnDeviceRestored() メソッドの次の行をコメントアウトします。
        //m_sceneRenderer->CreateDeviceDependentResources();
        //m_fpsTextRenderer->CreateDeviceDependentResources();
    
  5. DirectXPage.xaml.cpp を修正します。
    /*
        // バックグラウンド スレッドでポインター イベントが発生したときに、そのイベントを登録します。
        m_coreInput->PointerPressed += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &DirectXPage::OnPointerPressed);
        m_coreInput->PointerMoved += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &DirectXPage::OnPointerMoved);
        m_coreInput->PointerReleased += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &DirectXPage::OnPointerReleased);
    */
    
  6. DirectXPage.xaml.cpp から次のメソッドを削除して下さい。
  7. 実行すると [Hello from XAML!] が画面に表示されます。
    [Hello from XAML!] は DirectXPage.xaml のデザインから描画されています。
    邪魔になるなら削除して下さい。
    これ以外に、画面左上に[000 011]が、画面右上に[060 000]が表示されます。
    どこで描画されているのか調べてみたのですが、わかりませんでした。
    特に邪魔にはならないので、そのままにしておきます。

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