Il faut brider au bon moment aussi. À la louche (car ça fait longtemps que je n'ai pas touché à ces choses là), je dirais entre le calcul de la nouvelle image et le SDL_flip().
Sinon, petit exemple illustrant ce que je disais précédemment :
chris@tarsonis:~/Temp% cat test_sleep_1.c
code de test_sleep_1.c avec un while
- include <time.h>
int main()
{
time_t t = time(NULL);
time_t t2;
while ( (t2 = time(NULL)) < t + 10);
return 0;
}
chris@tarsonis:~/Temp% date ; time ./test_sleep_1 ; date
j'affiche la date avant, après, et je mesure la conso
mardi 22 mars 2011, 23:00:51 (UTC+0100)
./test_sleep_1 3,92s user 5,36s system
99% cpu
9,290 total
mardi 22 mars 2011, 23:01:01 (UTC+0100)
chris@tarsonis:~/Temp% cat test_sleep_2.c
maintenant, passons au test_sleep_2 avec un sleep à la place du while
- include <unistd.h>
int main()
{
sleep(10);
return 0;
}
chris@tarsonis:~/Temp% date ; time ./test_sleep_2 ; date
idem, j'affiche la date avant, après, et je mesure la conso
mardi 22 mars 2011, 23:01:12 (UTC+0100)
./test_sleep_2 0,00s user 0,00s system
0% cpu
10,001 total
mardi 22 mars 2011, 23:01:22 (UTC+0100)
On remarquera au passage que le sleep est très précis avec un total de « 10,001 » secondes contre « 9,290 » pour mon while cracra. 