Los motores de juego competitivas exitosas gusta más id Tech
, GoldSrc
, Source
y como permiten las limitaciones de imágenes por segundo.
Puedes jugar con 30, con 60, con 99, con 72, con 68, etc. En resumen, puedes limitarlo y controlarlo.
Me preguntaba, ¿cómo limito la velocidad de fotogramas?
No le interesa el código, sino la teoría.
frame-rate
sacudida
fuente
fuente
Respuestas:
La teoría es: comprueba cuándo has renderizado un cuadro por última vez, y si aún no es el momento de dibujar otro cuadro, no lo hagas, y espera hasta que lo sea.
fuente
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:
Sin embargo, dado que
sleep(x)
produce el hilo durante un mínimo dex
milisegundos, no sabe con certeza si recuperará el control en el tiempo.Una mejor manera sería usar:
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.
fuente