Kare hızınızı 60 fps ile sınırlamak istediğinizi varsayalım, bu her karenin 1 / 60s = 16,67ms (yuvarlak) oluşturma süresine sahip olduğu anlamına gelir
Kare hızınızı sınırlamak için sadece oyun döngünüzün başlangıcındaki zamanı kontrol edersiniz, daha sonra oyun döngüsünün sonundaki zamanla karşılaştırabilirsiniz: fark 16.67 ms'den azsa o zaman durmanız gerekir.
Bunu yapmanın bir yolu şunları kullanmaktır:
sleep(waittime)
Ancak sleep(x)
, ipliği minimum x
milisaniye boyunca verdiğinden, kontrolü zamanında geri alıp almayacağınızdan emin değilsiniz.
Kullanmanın daha iyi bir yolu:
while(timediff < 16.67ms){ sleep(0); }
Bu ipliği verir ve mümkün olan en kısa sürede kontrol talep eder.
Başka bir çözüm, sadece meşgul bir bekleme döngüsüne sahip olmaktır, bu size en iyi kontrolü sağlar, ancak CPU'yu gereksiz yere kullanır.
İşletim sistemi zamanlayıcısının her zaman iş parçacığınızdan kontrolü kaldırabileceğini unutmayın, bu nedenle bazı dalgalanmalara hazırlıklı olun.