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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...
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 !

Poukill.