DirectX DRテンプレートでデフォルト実装されているメソッドがどのタイミングで実行されるのかを調べてまとめました。
また、対象は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 |
メソッドが呼ばれる順番を図にしてみた
メッセージハンドラはループには入らないので、図には入れていません。
![](https://djima.net/wp-content/uploads/2024/05/image-6.png)