最終更新: mikk_ni3_92 2009年08月25日(火) 13:31:18履歴
現在地 >> メニュー >> 基本編25
INDEX:基本編24 << 基本編25 >> 基本編26
1秒間に何回画面を書き換えているかを表すのがfps(frame per second)である。
例えば、「30fps=1秒間に30回描画」という事になる。
簡単な方法としては、GLUTの「glutGet関数」を使ったものがある。
【例】
1回の描画に何秒かかるのかを表すのがspf(seconds per frame)である。
【例】
垂直同期とは、モニタのリフレッシュレートと描画を同期させる事である。
もしこれをOFFにすると、「frames per seconds」が1000や2000など、モニタのリフレッシュレートと関係なくなる。
ビデオカードのコントロールパネル(nVidiaコントロールパネル等)からの設定、あるいは
「GLFWライブラリ」やwindows環境における、「WGL_EXT_swap_control拡張」などで設定できる。
INDEX:基本編24 << 基本編25 >> 基本編26
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倍して[秒]に変換している。
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拡張」などで設定できる。
- 基本編25::まとめコード1(fpsの計算)
- 基本編25::まとめコード2(spfの計算)
- 基本編25::まとめコード3(垂直同期)
- NVIDIA_SDK_03 (SDKを使った方法)