मान लें कि आप अपने फ़्रेम को 60fps तक सीमित करना चाहते हैं, इसका मतलब है कि हर फ्रेम में 1 / 60s = 16,67ms (राउंडेड) का रेंडर समय है
अपनी फ्रेम दर को सीमित करने के लिए आप अपने गेम लूप की शुरुआत में समय की जांच करें, आप गेम लूप के अंत में समय के साथ इसकी तुलना कर सकते हैं: यदि अंतर 16.67ms से कम है तो आपको उस समय के लिए स्टाल करना चाहिए।
इसका उपयोग करने का एक तरीका यह है:
sleep(waittime)
हालाँकि जब से आप sleep(x)
कम से कम x
समय में नियंत्रण प्राप्त कर लेंगे, तो आप कम से कम मील के धागे के लिए पैदावार नहीं लेंगे।
उपयोग करने का एक बेहतर तरीका होगा:
while(timediff < 16.67ms){ sleep(0); }
इससे धागे की पैदावार होती है और अनुरोध जल्द से जल्द वापस नियंत्रित हो जाता है।
एक और उपाय बस एक व्यस्त लूप है, यह आपको सबसे अच्छा नियंत्रण देता है, लेकिन सीपीयू का अनावश्यक रूप से उपयोग करता है।
याद रखें कि ओएस अनुसूचक हमेशा आपके धागे से नियंत्रण हटा सकता है इसलिए कुछ उतार-चढ़ाव के लिए तैयार रहें।