Czytałem, że szybkość obiektów w grze nie powinna być utrudniana przez FPS, ale zamiast tego powinna być oparta na czasie. Jak mogę oddzielić kod aktualizacji / rysowania, aby zmaksymalizować wydajność bez ograniczania szybkości rysowania i zapewnić stałą logiczną szybkość aktualizacji na podstawie czasu?
Mój obecny pseudo kod jest następujący
loop
{
draw();
if (ticksElapsed() > 100)
{
update();
ticks+= ticksElapsed();
}
}
Problem polega na tym, że kod rysunkowy utrudnia wydajność aktualizacji (). I zużywa 100% procesora, ponieważ jeśli zostanie uśpiony, to wyłączy obie funkcje rysowania / logiki.
Używam również SDL i wydaje się, że nie ma opcji vsync. Słyszałem również o terminach ustalonych i zmiennych krokach czasowych, jednak nie jestem pewien, jak można to zrobić za pomocą funkcji sleep ()