Compter le nombre d'image par secondes (FPS)
Salut à tous,
Je cherche à calculer le FPS du film que je suis en train d'afficher, pour tester différents algos et leur performance.
Tout d'abord je sais que des bibliothèques le font nativement (WxWidget, et très certainement Qt), mais je cherche ici à comprendre le principe.
L'implémentation que j'ai proposée est vraiment nulle, il faut bien le dire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#include <iostream>
#include <boost/thread.hpp>
#include "boost/date_time/posix_time/posix_time.hpp"
class Timer
{
public:
Timer() : m_Update(false) {}
//Lancer un comptage jusqu'a 1, puis s'arrêter
void Go() {
m_Update = false;
boost::thread myThread(boost::bind(&Timer::Count, this) );
}
// Fonction membre à appeler pour vérifier la fin du comptage
bool IsSecond() const {return m_Update;}
private:
void Count()
{
boost::posix_time::ptime time = boost::posix_time::microsec_clock::local_time();
while(1) {
boost::posix_time::ptime time2 = boost::posix_time::microsec_clock::local_time();
if ((time2 - time).total_milliseconds() > 1000) // 1 seconde
{
m_Update = true;
break;
}
}
}
bool m_Update;
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
int main()
{
Timer timer;
timer.Go();
while(1)
{
if ( timer.IsSecond() == true )
{
std::cout << "1 seconde " << std::endl;
timer.Go();
}
}
return 0;
} |
Mon while(1) prend un coeur tout entier... :oops:
Seulement, pour essayer d'être "exact" je vois pas vraiment comment faire. Je suppose que vous devez avoir plein d'idées.
Je vous écoute ! 8-)
Poukill.