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