処理と描画に掛かった時間を視覚化するクラスを作ってみた
画面サンプル
60FPSで動作するゲームの場合、1フレームに使用できる時間は16.666ミリ秒。
その時間の内、どれだけが処理・描画に使われているかが下部のバーで表される。(1目盛り=1ミリ秒)
- 太い緑:現フレームにおいて処理に費やされた時間
- 太い赤:現フレームにおいて描画に費やされた時間
- 細い緑:処理に費やされた時間の内、最大の物(最大負荷)
- 細い赤:描画に費やされた時間の内、最大の物(最大負荷)
使い方
今回もCodeRepos管理。使ってみたい人、改造したい人はご自由にどうぞー。
http://coderepos.org/share/export/21060/lang/cplusplus/misc/UsedTimeViewer/UsedTimeViewer.cpp
http://coderepos.org/share/export/21060/lang/cplusplus/misc/UsedTimeViewer/UsedTimeViewer.h
をダウンロードしてプロジェクトに組み込み、include & 初期化。
// 初期化 CUsedTimeViewer* pUsedTimeViewer = new CUsedTimeViewer(0, HEIGHT - 24, WIDTH, 24, 1 * 1000 * 1000 / 60);
んで、処理ループ内で計測及び描画。
drawUsedTimeBarはBeginSceneとEndSceneの間に。引数はLPDIRECT3DDEVICE8。
DirectX9な人は型だけ変えればそんなに問題なく動くはず。
pUsedTimeViewer->moveStart(); // ここに処理ロジックを書く pUsedTimeViewer->moveEnd(); // BeginScene pUsedTimeViewer->drawStart(); // ここに描画ロジックを書く pUsedTimeViewer->drawEnd(); pUsedTimeViewer->drawUsedTimeBar(m_lpD3Ddev); // EndScene
こんなのを書いておくと最大負荷のクリアが出来て便利
if(CInputMngr::IsKeyDown(VK_F8)) pUsedTimeViewer->clearMaxTime();