トップページ > 過去ログ > 記事閲覧
フレームレート計測
名前:暮林英二 日時: 2011/06/03 00:32

float fps; // フレームレート unsigned long time; // 現在の時間 static unsigned long oldtime = 1; // 1フレーム前の時間 static float sfps[10] = {0}; // サンプルフレームレート static int count = 0; // フレームのカウント int i; fps = 0.0f; time = timeGetTime(); if(count == 9) {count = 0;} // 10フレーム後に0に戻す sfps[count] = 1000 / (time - oldtime); // フレームレート取得 for(i=0; i<10; i++) {fps += sfps[i];} // すべてのサンプルフレームレートを加算 fps /= 10; // 平均値を代入 oldtime = time; count++; // -------------------------------- このようにしてフレームレートを計測したところcountの値を増やすとfpsの値が上がりました。どこかに不備があるのでしょうか。ご教授お願いします。

Page: 1 |

Re: フレームレート計測 ( No.1 )
名前:暮林英二 日時:2011/06/03 00:34

>> countの値を増やすと 訂正です。サンプルフレームレート数を増やしました。
Re: フレームレート計測 ( No.2 )
名前:いっち 日時:2011/06/03 12:32

うーん fps /= 10; を変更し忘れているとか・・・。 とりあえず、以下のようにサンプルの数を定数化なさってみてはどうでしょう? const int SampleSize = 10; float fps; // フレームレート unsigned long time; // 現在の時間 static unsigned long oldtime = 1; // 1フレーム前の時間 static float sfps[SampleSize] = {0}; // サンプルフレームレート static int count = 0; // フレームのカウント int i; fps = 0.0f; time = timeGetTime(); if(count >= SampleSize) {count = 0;} // 10フレーム後に0に戻す sfps[count] = 1000 / (time - oldtime); // フレームレート取得 for(i=0; i<SampleSize; i++) {fps += sfps[i];} // すべてのサンプルフレームレートを加算 fps /= SampleSize; // 平均値を代入 oldtime = time; count++;
Re: フレームレート計測 ( No.3 )
名前:暮林英二 日時:2011/06/03 19:57

>> とりあえず、以下のようにサンプルの数を定数化なさってみてはどうでしょう? 返信ありがとうございます。サンプル数を増やすと平均化してきましたが、減らした場合はフレームレートが落ちます。 sample=100のときfps=60~58 sample=5のときfps=24~22など
Re: フレームレート計測 ( No.4 )
名前:いっち 日時:2011/06/03 20:22

意図通りに動作していない際のソースをご提供下さい。 (この場合 "sample=5のとき" のソース)
Re: フレームレート計測 ( No.5 )
名前:暮林英二 日時:2011/06/03 21:58

w w w.mediafire.com/?17i6rxzis1tiikd こちらです
Re: フレームレート計測 ( No.6 )
名前:いっち 日時:2011/06/03 22:49

97行目を以下のように修正すると正しく計測できるようでした。 > if(count == SAMPLE_FRAME - 1) {count = 0;} ↓↓↓↓ > if(count == SAMPLE_FRAME) {count = 0;}
Re: フレームレート計測 ( No.7 )
名前:暮林英二(解決) 日時:2011/06/04 01:39

!!そういうことだったんですか。 ありがとうございます、すっきりしました。

Page: 1 |