এটি করার জন্য কমপক্ষে দুটি উপায় রয়েছে:
প্রথমটি অন্যটি আমার আগে এখানে উল্লেখ করেছেন। আমি মনে করি এটি সবচেয়ে সহজ এবং পছন্দসই উপায়। আপনি শুধু ট্র্যাক রাখা
- সিএন: আপনি যে কতগুলি ফ্রেম রেন্ডার করেছেন তার কাউন্টার
- সময়_শক্তি: আপনি গণনা শুরু করার সময় থেকে
- সময়_ এখন: বর্তমান সময়
এই ক্ষেত্রে fps গণনা করা এই সূত্রটি মূল্যায়ন করার মতোই সহজ:
- এফপিএস = সিএন / (সময়_ এখন - সময়_স্টার্ট)।
তারপরে আপনি কিছু দিন ব্যবহার করতে পছন্দ করতে পারেন এমন দুর্দান্ত উপায় রয়েছে:
ধরা যাক আপনার বিবেচনার জন্য 'আমি' ফ্রেম রয়েছে। আমি এই স্বরলিপিটি ব্যবহার করব: চ [0], চ [1], ..., চ [i-1] ফ্রেম 0, ফ্রেম 1, ..., ফ্রেম রেন্ডার করতে কত সময় লেগেছে তা বর্ণনা করতে (i-1) ) যথাক্রমে।
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
তারপরে, আমি ফ্রেমের পরে fps এর গাণিতিক সংজ্ঞা হবে
(1) fps[i] = i / (f[0] + ... + f[i-1])
এবং একই সূত্র কিন্তু কেবল আই -1 ফ্রেম বিবেচনা করে।
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
এখন এখানে কৌশলটি হ'ল সূত্রের ডান দিকটি (1) এমনভাবে সংশোধন করা যাতে এতে সূত্রের ডান দিকটি থাকে (2) এবং এটির বাম পাশের জন্য এটি বিকল্পযুক্ত করে।
ভালো লেগেছে (আপনি যদি এটি কাগজে লিখে থাকেন তবে আপনাকে আরও স্পষ্ট দেখতে হবে):
fps[i] = i / (f[0] + ... + f[i-1])
= i / ((f[0] + ... + f[i-2]) + f[i-1])
= (i/(i-1)) / ((f[0] + ... + f[i-2])/(i-1) + f[i-1]/(i-1))
= (i/(i-1)) / (1/fps[i-1] + f[i-1]/(i-1))
= ...
= (i*fps[i-1]) / (f[i-1] * fps[i-1] + i - 1)
সুতরাং এই সূত্র অনুসারে (আমার গণিত থেকে প্রাপ্ত দক্ষতা কিছুটা মরিচা হয়ে উঠেছে), নতুন fps গণনা করার জন্য আপনাকে আগের ফ্রেম থেকে fps জানতে হবে, শেষ ফ্রেমটি রেন্ডার করতে আপনি যে সময়কালে নিয়েছিলেন এবং আপনার ফ্রেমের সংখ্যাটি অনুষ্ঠিত.