ページ 11

FPSについて

Posted: 2010年1月10日(日) 20:32
by Ω
ゲームプログラミングの館のs6節「FPSを表示しよう」のコードをコピペして実行すると、
約30FPSぐらいしか出なかったので、「30FPSでいいか」と、変更しようとした訳ですが、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void fps(){
   int i;
   static int t=0,ave=0,f[60];
 
   f[count%60]=GetNowCount()-t;
   t=GetNowCount();
   if(count%60==59){
      ave=0;
      for(i=0;i<60;i++)
         ave+=f;
      ave/=55←―――――――○(最初は60だった)
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            
←○の数値をいじったら、60FPSとか500FPSとか表示されたのですが、
コレは表示だけでFPSは変わってないのでしょうか?
並行して、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void wait_fanc(){
   int term;
   static int t=0;
   term = GetNowCount()-t;
   if(32-term>0) ←―――――――――○(16を32に)
      Sleep(32-term);←―――――――○(同上   )
   t=GetNowCount();
   return;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

と変更しています。 画像

Re:FPSについて

Posted: 2010年1月10日(日) 21:19
by Dixq (管理人)
Ωさん、こんにちは。

平均を55で割っている理由は何でしょう?

wait_func関数の修正はそれでいいと思いますが、厳密なFPS制御はそれではできません。

http://dixq.net/rp/43.html

この辺お読みいただけると解ると思います。

Re:FPSについて

Posted: 2010年1月11日(月) 15:51
by Ω
返答ありがとうございます。解決しました。

平均を55で割ったのは、表示されるfpsが約30になったからです。60だとfps32前後になってしまったので・・・