4Fermer6
ZerosquareLe 03/06/2014 à 16:11
Folco (./4) :
La SDL fournit des timers qui se relancent à la demande, suffit d'avoir un booléen volatile que le timer toggle tous les 1/60ème de seconde pour savoir quand lancer le render.
Beurk : c'est du polling et c'est mal (ça gaspille du temps CPU et de l'énergie pour rien). Utilise les mécanismes faits pour ça (événements, sémaphores, etc.)

D'autre part, mélanger synchro VBL et synchro par timer t'expose à des soucis, surtout étant donné que les fréquences sont quasi-identiques (en pratique, deux sources indépendantes censées être exactement à la même fréquence ne le sont jamais), et qu'en plus les timers risquent d'être approximatifs.

Il vaut mieux ne se baser que sur la VBL, avec un test au lancement du soft pour déterminer la fréquence de rafraîchissement (tu recalcules tes constantes de timing en fonction).

Note : ça ne serait pas suffisant pour un jeu où le render peut potentiellement prendre plus d'une VBL, mais pour un jeu 2D sur une machine normale y'a peu de risques et ça simplifie les choses. Idem, avoir des constantes de timing différentes peut poser problème dans les moteurs physiques compliqués et/ou pour du jeu en réseau où les résultats doivent être identiques sur toutes les machines.