現在地 >> メニュー >> 基本編25
INDEX:基本編24 << 基本編25 >> 基本編26

fps(frame per second)の計算


1秒間に何回画面を書き換えているかを表すのがfps(frame per second)である。
例えば、「30fps=1秒間に30回描画」という事になる。

簡単な方法としては、GLUTの「glutGet関数」を使ったものがある。

【例】
int GLframe = 0; //フレーム数
int GLtimenow = 0;//経過時間
int GLtimebase=0;//計測開始時間
... ...

	GLframe++; //フレーム数を+1
	GLtimenow = glutGet(GLUT_ELAPSED_TIME);//経過時間を取得
	
	if (GLtimenow - GLtimebase > 1000)	//1秒以上たったらfpsを出力
	{
		printf("fps:%f\r",GLframe*1000.0/(GLtimenow-GLtimebase));
		GLtimebase = GLtimenow;//基準時間を設定		
		GLframe = 0;//フレーム数をリセット
	}
... ...
▲fpsの計算は(フレーム数)/(経過時間)[ミリ秒]を1000倍して[秒]に変換している。

spf(second per second)の計算


1回の描画に何秒かかるのかを表すのがspf(seconds per frame)である。
【例】
GLStart = glutGet(GLUT_ELAPSED_TIME);
...   描画   ...
GLEnd = glutGet(GLUT_ELAPSED_TIME);
printf("second per frame %f second \r",(GLEnd - GLStart)/1000.0);
... ...
※glutGet(GLUT_ELAPSED_TIME)はそれほど精度が高いわけではない。

メモ:垂直同期


垂直同期とは、モニタのリフレッシュレートと描画を同期させる事である。
もしこれをOFFにすると、「frames per seconds」が1000や2000など、モニタのリフレッシュレートと関係なくなる。

ビデオカードのコントロールパネル(nVidiaコントロールパネル等)からの設定、あるいは
「GLFWライブラリ」やwindows環境における、「WGL_EXT_swap_control拡張」などで設定できる。

サンプルコード

関連

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます