Bonjour.
Je programme un jeu avec les SDL et voici le problème. Je rafraichis l'écran tout les 55ms (soit 18 fois par seconde). J'ai donc mis un timer de 55ms dans ma boucle principale et je regarde si j'ai des evenements avec la fonction SDL_PollEvent. Le problème c'est que du coup quand j'appuie sur un touche il me compte parfois deux appuyes au lieux d'un (et cela sans même activier la répétition clavier). La seul solution que j'ai trouvé c'est de baisser le fps mais du coup je perd en fluidité.
voci un extrait du code:
Quelq'un aurait il une solution?
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 int tempsPrecedent = 0, tempsActuel = 0; while(iContinuer) { SDL_PollEvent(&event); switch(event.type) { case SDL_QUIT: iContinuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: iContinuer=0; break; case SDLK_UP: //mis a jour qui se produite trop de fois } } tempsActuel = SDL_GetTicks(); if (tempsActuel - tempsPrecedent > (1000/FPS)) { //mis a jour tempsPrecedent = tempsActuel; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */ } else { SDL_Delay((1000/FPS) - (tempsActuel - tempsPrecedent)); } }
merci d'avance.
Partager