Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подсчитать FPS? [VC, Windows]


VolanD666 ©   (2005-11-07 06:27:00) 

Люди, кто знает, как правильно подсчитать FPS, если я использую GetTickCount()? Пожалуйста, с комментариями :-)


VolanD666   (2005-11-10 16:47:00) [1]

MBo :-)


VolanD666   (2005-11-08 14:13:00) [2]

Упсс.. Маленькая поправочка:
Inc(frames);
ThisTickCount := GetTickCount;
if ThisTickCount-LastTickCount > 1000/80 then
begin
SFPS := 'fps= ' + Format('%6.2f',
                                 [frames * 1000 / (ThisTickCount - LastTickCount)]);
Draw();
LastTickCount := GetTickCount;
frames:=0;
end;


По идее frames считает количество процедур при которых отрисовка не происходила...А зачем?


MBo   (2005-11-07 15:08:00) [3]

Логика простая - требуется подсчитать скорость, т.е. количество некоторых событий за 1 секунду.
Если за t секунд прошло n кадров, то FPS=n/t
Поскольку с помощью GetTickCount временной промежуток измеряется в миллисекундах, то  t =/1000
Таким образом,   FPS=n*1000/ (T2-T1)


VolanD666   (2005-11-07 14:29:00) [4]

Есть код типа:
   Inc(frames);
   ThisTickCount := GetTickCount;
   if ThisTickCount-LastTickCount > 1000/80 then
   begin
     SFPS := 'fps= ' + Format('%6.2f',
                              [frames * 1000 / (ThisTickCount - LastTickCount)]);
     Draw();
     LastTickCount := GetTickCount;
   end;

Только я его все никак понять не могу...


Фео   (2005-11-07 11:47:00) [5]

c ООП мона и обычным таймером считать...


n85sergey   (2005-11-07 11:06:00) [6]

я так делал
procedure TForm1.OnIdle(Sender: TObject;var Done: boolean);
begin
 if GetTickCount() - LastTime >= 1000 then
 begin
  SetWindowText(Handle,pChar('Fps : '+IntToStr(Fps)));
  LastTime := GetTickCount();
  Fps := 0;
 end;
 Render();
 SwapBuffers(DC);
 Inc(Fps);
Done := false;
end;


Фео   (2005-11-07 10:26:00) [7]

http://www.sulaco.co.za/


Наверх

Титульная страница Поиск, карта сайта Написать письмо