বলুন আপনি নিজের ফ্রেমরেটটি 60fps-এ সীমাবদ্ধ করতে চান, তার অর্থ প্রতিটি ফ্রেমের 1 / 60s = 16,67ms রেন্ডার সময় থাকে (বৃত্তাকার)
আপনার ফ্রেমের হার সীমাবদ্ধ করতে আপনি আপনার গেম লুপের শুরুতে কেবল সময়টি পরীক্ষা করতে পারেন, তারপরে আপনি গেম লুপের শেষে যে সময়ের সাথে তুলনা করতে পারেন: যদি পার্থক্যটি 16.67ms এর চেয়ে কম হয় তবে আপনাকে সেই সময়ের জন্য স্টল করা উচিত।
এটি করার একটি উপায় হ'ল ব্যবহার করা:
sleep(waittime)
তবে যেহেতু sleep(x)
ন্যূনতম x
মিলিসেকেন্ডের জন্য থ্রেড ফলন করে আপনি সময় মতো নিয়ন্ত্রণ ফিরে পাবেন কিনা তা আপনি নির্দিষ্টভাবে জানেন না।
একটি ভাল উপায় ব্যবহার করা হবে:
while(timediff < 16.67ms){ sleep(0); }
এটি থ্রেড প্রদান করে এবং যত তাড়াতাড়ি সম্ভব ফিরে আসার অনুরোধ জানায়।
আর একটি সমাধান হ'ল ব্যস্ত ওয়েট লুপ থাকা, এটি আপনাকে সেরা নিয়ন্ত্রণ দেয় তবে অযথা সিপিইউ ব্যবহার করে।
মনে রাখবেন যে ওএস সময়সূচী সর্বদা আপনার থ্রেড থেকে নিয়ন্ত্রণ সরিয়ে নিতে পারে তাই কিছুটা ওঠানামা করার জন্য প্রস্তুত থাকুন।