BaseDx12(Dx12研究とフレームワーク)

【第1部】シンプルバージョン編

1110.シンプルな三角形の描画(10)

終了処理

 WinMain.cppにおける、MainLoop()関数では、アイドリングループはEscキーなどで終了します。
 ループを抜けると
        basedx12::App::Destroy();
 が実行されます。これは終了処理をする呼び出しです。
 内容は以下になります。
    void GameDevice::OnDestroy()
    {
        //GPUの処理待ち
        WaitForGpu();
        CloseHandle(m_fenceEvent);
    }
 となっています。WaitForGpu()関数は、GameDevice::LoadAssets()のところでも説明しました。
 GPUの処理を待つ関数を呼びだします。
        CloseHandle(m_fenceEvent);
 は、フェンスイベントというハンドルをクローズします。これはDirectX-Graphics-Samplesに習ったものです。
 また、もし、シーン側で、OnDestroy処理が必要なら、
        App::GetSceneBase().OnDestroy();
 と、呼び出すこともできます。
 このサンプルでは、継承先であるScene::OnDestroy()空関数となっています。

このサンプルの解説を終えて

 じつに単純な三角形を描画するために、HTMLページで10ページも消費してしまいました。
 このようにDx12は、プログラマが自分で実装しなければならない部分が多く、またルートシグネチャディスクプリタヒープといった新しい概念も登場します。
 とはいえ、一つ一つ原理を理解していけば、納得のいく部分も多くなると思います。
 次項からは、次のサンプル複数のオブジェクトの描画に移ります。
 今度は複数のオブジェクトの配置と更新処理がテーマです。
 BaseDx12では、どのような手法で、それらを一般化してるのか。
 そのあたりを解説できたらいいかなと思っています。