FPS

アルゴリズムがだめだったみたい。今までの方法としては

001 var
002   oldT: Int64;
003 procedure MainLoop;
004 var
005   nowT: Int64;
006   e: double;
007 begin
008   QueryPerformanceCounter(nowT);
009 
010   e := (nowT - oldT) / freq;
011   while e <= (1000 / 60.1) do
012   begin
013     System.Threading.Thread.Sleep(0);
014     QueryPerformanceCounter(nowT);
015     e := (nowT - oldT) / freq;
016   end;
017 
018   // 処理を記述
019 
020 end;

こんな感じだったのだけれど、処理を記述しなくても途中で30FPS程度まで落ちることがあったので変更した。具体的にはWindowsプロフェッショナルゲームプログラミングのFPSTimerのような感じで実装。

さて次は描画をDrawUserPrimitivesに変更するか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です