Os motores de jogos competitivos de sucesso maioria gosta id Tech
, GoldSrc
, Source
e tal permitir limitações de framerate.
Você pode jogar com 30, com 60, com 99, com 72, com 68 etc. Em suma, você pode limitar e controlar a tampa.
Fiquei me perguntando, como limite a taxa de quadros?
Não estou interessado em código, mas em teoria.
frame-rate
joltmode
fonte
fonte
Respostas:
A teoria é: verifique quando você renderizou um quadro pela última vez e se ainda não é hora de desenhar outro quadro, não o faça e aguarde até que ele seja.
fonte
Digamos que você queira limitar a taxa de quadros a 60 qps, isso significa que todo quadro tem um tempo de renderização de 1 / 60s = 16,67ms (arredondado)
Para limitar sua taxa de quadros, basta verificar o horário no início do loop do jogo, e então compará-lo com o horário no final do loop do jogo: se a diferença for menor que 16,67ms, você deve parar por esse tempo.
Uma maneira de fazer isso é usar:
No entanto, como
sleep(x)
produz o encadeamento por um mínimo dex
milissegundos, você não sabe ao certo se conseguirá o controle novamente no tempo.Uma maneira melhor seria usar:
Isso gera o encadeamento e solicita o controle de volta o mais rápido possível.
Outra solução é ter apenas um loop de espera ocupado, isso oferece o melhor controle, mas usa a CPU desnecessariamente.
Lembre-se de que o agendador do sistema operacional sempre pode tirar o controle do seu encadeamento, portanto, esteja preparado para alguma flutuação.
fonte