Коли розробляється графіка реального часу, дуже важливо пильнувати продуктивність. Хорошою ідеєю буде вибрати якийсь FPS (зазвичай 30 чи 60) і робити все, щоб дотримуватись її.

Лічильник FPS зазвичай виглядає так :

 double lastTime = glfwGetTime();
 int nbFrames = 0;

 do{

     // Вимірюємо швидкість
     double currentTime = glfwGetTime();
     nbFrames++;
     if ( currentTime - lastTime >= 1.0 ){ // якщо останній prinf() був більше 1 секунди тому
         // printf і скидаємо таймер
         printf("%f мс/кадру\n", 1000.0/double(nbFrames));
         nbFrames = 0;
         lastTime += 1.0;
     }

     ... інший код в головному циклі

В цьому коді є одна дивна річ. Цей код виводить час в мілісекундах, який потрібен для обробки одного кадру (в середньому за секунду), а не скільки кадрів було намальовано за останню секунду.

Це в дійсності значно краще. Не покладайтесь на FPS. Ніколи. КадриВСекунду = 1/СекундНаКадр, це просто зворотня залежність и ми люди погано розуміємо подібні відношення. Давайте розглянемо приклад.

Ви написали чудову функцію малювання, що виконує 1000 кадрів в секунду (1 мс на кадр). Але ви забули про маленький шейдер, що робить невеличкі розрахунки і це додає 0.1 мс. І ой, 1/(0.001 + 0.0001) = 900. Ви просто втрачаєте 100 кадрів в секунду. Мораль: Ніколи не використовуйте FPS для аналізу продуктивності.

Якщо Ви хочете отримати 60fps, то Ваша ціль буде 16.6666мс, якщо Ви хочете 30fps, тоді Ваша ціль 33.3333мс. Це все, що Вам потрібно знати.

Цей код доступний в всіх туторіалах, починаючи з Туторіал 9 : VBO індекси; дивіться tutorial09_vbo_indexing/tutorial09.cpp . Інші інструменти вимірювання продуктивності Інструменти - Відлагоджувач.