Załóżmy, że chcesz ograniczyć liczbę klatek na sekundę do 60 klatek na sekundę, co oznacza, że każda klatka ma czas renderowania 1 / 60s = 16,67 ms (w zaokrągleniu)
Aby ograniczyć liczbę klatek na sekundę, wystarczy sprawdzić czas na początku pętli gry, a następnie porównać go z czasem na końcu pętli gry: jeśli różnica jest mniejsza niż 16,67 ms, należy zatrzymać się na ten czas.
Jednym ze sposobów na to jest użycie:
sleep(waittime)
Ponieważ jednak sleep(x)
daje wątek przez minimum x
milisekundy, nie wiesz na pewno, czy odzyskasz kontrolę w czasie.
Lepszym sposobem byłoby użycie:
while(timediff < 16.67ms){ sleep(0); }
Daje to wątek i zwraca kontrolę jak najszybciej.
Innym rozwiązaniem jest po prostu zajęta pętla oczekiwania, co daje najlepszą kontrolę, ale niepotrzebnie wykorzystuje procesor.
Pamiętaj, że harmonogram systemu operacyjnego może zawsze odebrać kontrolę nad twoim wątkiem, więc przygotuj się na pewne wahania.