Bob.Killer Site Administrator

Inscrit le: 19 Jan 2008 Messages: 53 Localisation: Lyon
|
Posté le: Ven Juil 10, 2009 11:51 Sujet du message: [C/C++] Windows : Bloquage du nombre d'images par seconde |
|
|
Petit bout de code afin de contrôler le framerate d'une application 3D
Code: |
// note: BE SURE YOU CALL timeBeginPeriod(1) at program startup!!!
// note: BE SURE YOU CALL timeEndPeriod(1) at program exit!!!
int max_fps = 60;
static LARGE_INTEGER m_prev_end_of_frame;
static LARGE_INTEGER m_high_perf_timer_freq;
LARGE_INTEGER t;
QueryPerformanceCounter(&t);
QueryPerformanceFrequency(&m_high_perf_timer_freq);
if (m_prev_end_of_frame.QuadPart != 0)
{
int ticks_to_wait = (int)m_high_perf_timer_freq.QuadPart / max_fps;
int done = 0;
do
{
QueryPerformanceCounter(&t);
int ticks_passed = (int)((__int64)t.QuadPart - (__int64)m_prev_end_of_frame.QuadPart);
int ticks_left = ticks_to_wait - ticks_passed;
if (t.QuadPart < m_prev_end_of_frame.QuadPart)
done = 1;
if (ticks_passed >= ticks_to_wait)
done = 1;
if (!done)
{
if (ticks_left > (int)m_high_perf_timer_freq.QuadPart*2/1000)
Sleep(1);
else
for (int i=0; i<10; i++)
Sleep(0);
}
}
while (!done);
}
m_prev_end_of_frame = t; |
_________________ Site de programmation C/C++, OpenGL, DirectX et Cg, HLSL.
 |
|