開発^3

Web開発、宇宙開発、ゲーム開発の3種類についてつらつらと

処理と描画に掛かった時間を視覚化するクラスを作ってみた

画面サンプル

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();