DirectX DRテンプレートのデフォルト実装メソッドの実行タイミングについて

はじめに

DirectX DRテンプレートでデフォルト実装されているメソッドがどのタイミングで実行されるのかを調べてまとめました。

また、対象はDRテンプレートでプロジェクトを生成した時点のGame.hppに定義されているメソッドです。
これらのメソッドは、Main.cppで呼び出されています。

実装メソッド一覧

Game.hppに定義されているメソッドは一般的なアプリケーション(ゲーム)のライフサイクルに処理を実装できるように設計されています。

テンプレート生成時点のメソッドはアプリの実行後に順次実行されるものと、メッセージハンドラ(ユーザーやシステムからのイベントを受けたときだけ実行)の2種類で構成されています。

順次実行 + ループ

3から3.2.1までのメソッドは毎フレーム実行されます。

メソッド名実行順解説
Initialize1アプリケーションのスタート時に一度だけ実行
CreateDeviceDependentResources1.1Initializeの中、またはデバイスが初めて作成された時に実行
CreateWindowSizeDependentResources2ウィンドウサイズに依存するリソースを初期化する際に実行
Tick3毎フレーム実行
Update3.1Tickの中で実行され、ゲームの状態を更新
Render3.2Tickの中で実行され、画面を描画
Clear3.2.1Renderの中で実行され、画面をクリア
見出しをクリックすると並び替えができます

メッセージハンドラ

これらのメソッドは、ユーザーやシステムからのイベント(メッセージ)に反応して実行されるメソッドです。

メソッド名解説メッセージ
OnActivatedアプリケーションがアクティブになったとき(ウィンドウがフォーカスを得たとき)WM_ACTIVATEAPP
OnDeactivatedアプリケーションが非アクティブになったとき(ウィンドウがフォーカスを失ったとき)WM_ACTIVATEAPP
OnSuspendingシステムがスリープ状態に入るか、アプリケーションが最小化されたときWM_SIZE
WM_POWERBROADCAST
OnResumingシステムがスリープ状態から復帰するか、アプリケーションが最小化から復帰したときWM_SIZE
WM_POWERBROADCAST
OnWindowMovedウィンドウが移動されたときWM_MOVE
OnDisplayChangeディスプレイの解像度や設定が変更されたときWM_DISPLAYCHANGE
OnWindowSizeChangedウィンドウのサイズが変更されたときWM_SIZE
見出しをクリックすると並び替えができます

メソッドが呼ばれる順番を図にしてみた

メッセージハンドラはループには入らないので、図には入れていません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です