Замер производительности с помощью FPS

Как быстро выполняется приложение? Под производительностью мы понимаем количество кадров в секунду. Этот способ замера не является самым оптимальным, мы хотим только получить относительную оценку.

GLUT обеспечивает нас функцией, позволяющей нам запрашивать различные параметры системы, одна из которых кол-во милисекунд от последнего вызова glutInit. Синтаксис функции таков:

function glutGet (state: GLenum): Integer; stdcall;

Параметр state указывает на требуемое значение. Нам нужен аргумент state со значением GLUT_ELAPSED_TIME.

Инициализация:

var
  time: integer;
...
time := glutGet (GLUT_ELAPSED_TIME);

В данном случае glutGet (GLUT_ELAPSED_TIME) имеет аналог в Windows в функции GetTickCount. Чтобы не повредить кроссплатформенности кода, рекомендуется избавляться от наличия GetTickCount.

Следующий кусок кода поместим в зарегистрированную процедуру idle, которая и будет выполнять работу:

const
  time: integer;
var
  frame: integer = 0;
  timebase: integer = 0;
 
	...
	inc (frame);
	time := glutGet (GLUT_ELAPSED_TIME);
 
	if (time - timebase > 1000) 
        begin
		fps := frame*1000.0 / (time-timebase);
	 	timebase := time;		
		frame := 0;
	end;
	...

Ссылки

 
articles/fps.txt · Последнее изменение: d.m.Y H:i — romtek
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki