Supongamos que desea limitar su velocidad de cuadros a 60 fps, eso significa que cada cuadro tiene un tiempo de renderizado de 1 / 60s = 16,67ms (redondeado)
Para limitar su velocidad de cuadros, simplemente verifique el tiempo al comienzo de su ciclo de juego, luego puede compararlo con el tiempo al final del ciclo de juego: si la diferencia es inferior a 16.67 ms, debe detenerse durante ese tiempo.
Una forma de hacer esto es usar:
sleep(waittime)
Sin embargo, dado que sleep(x)
produce el hilo durante un mínimo de x
milisegundos, no sabe con certeza si recuperará el control en el tiempo.
Una mejor manera sería usar:
while(timediff < 16.67ms){ sleep(0); }
Esto produce el subproceso y solicita el control lo antes posible.
Otra solución es tener un bucle de espera ocupado, esto le brinda el mejor control pero usa la CPU innecesariamente.
Recuerde que el programador del sistema operativo siempre puede quitarle el control a su hilo, así que prepárese para alguna fluctuación.