Как быстро выполняется приложение? Под производительностью мы понимаем количество кадров в секунду. Этот способ замера не является самым оптимальным, мы хотим только получить относительную оценку.
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; ...