【DirectX11】DirectXテンプレートで生成されるメソッドの実行順について
目次
はじめに
この記事では、DirectX DRテンプレートを使ってプロジェクトを作成したときに、実装されているメソッドがどのタイミングで実行されるのかを調べた結果をまとめます。
また、対象はGame.hppに定義されているメソッドです。
これらのメソッドは、基本的にMain.cppで呼び出されています。
実装メソッドについて
Game.hppに定義されているメソッドは一般的なアプリケーション(ゲーム)のライフサイクルに処理を実装できるように設計されています。
実行時に順次実行されるものと、ユーザーやシステムからのイベントを受けたときだけ実行するものの2種類のメソッドがあります。
以下が、メソッドの実行順を図にしたものです。
イベントはループには入らないので、図には入れていません。
順次実行 + ループ
3から3.2.1までのメソッドは毎フレーム実行されます。
| メソッド名 | 実行順 | 解説 |
|---|---|---|
| Initialize | 1 | アプリケーションのスタート時に一度だけ実行 |
| CreateDeviceDependentResources | 1.1 | Initialize の中、またはデバイスが初めて作成された時に実行 |
| CreateWindowSizeDependentResources | 2 | ウィンドウサイズに依存するリソースを初期化する際に実行 |
| Tick | 3 | 毎フレーム実行 |
| Update | 3.1 | Tick の中で実行され、ゲームの状態を更新 |
| Render | 3.2 | Tick の中で実行され、画面を描画 |
| Clear | 3.2.1 | Render の中で実行され、画面をクリア |
メッセージハンドラメソッド
これらのメソッドは、ユーザーやシステムからのイベント(メッセージ)に反応して実行されるメソッドです。
| メソッド名 | 解説 | メッセージ |
|---|---|---|
| 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 |
【DirectX11】DirectXテンプレートで生成されるメソッドの実行順について
https://daiki-iijima.github.io/2026/01/02/【DirectX11】DirectXテンプレートで生成されるメソッドの実行順について/
