【第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では、どのような手法で、それらを
一般化してるのか。
 そのあたりを解説できたらいいかなと思っています。