वहाँ यह करने के लिए कम से कम दो तरीके हैं। मुझे लगता है कि यह सबसे सरल और पसंदीदा तरीका है।तुम बस
- cn का ट्रैक रखने के: आप कितने तख्ते गाया गया है
- TIME_START के काउंटर: समय के बाद से आप की गिनती
- time_now शुरू कर दिया है: वर्तमान समय
इस मामले में एफपीएस की गणना करना इस सूत्र का मूल्यांकन करने जितना सरल है:
तो फिर वहाँ uber अच्छा तरीका है कि आप कुछ दिन का उपयोग करना चाहते हो सकता है। मैं इस नोटेशन का उपयोग करूंगा: f [0], f [1], ..., f [i-1] यह वर्णन करने के लिए कि फ्रेम 0, फ्रेम 1, ..., फ्रेम (i-1 प्रस्तुत करने में कितना समय लगेगा क्रमशः)।
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
फिर, मैं फ्रेम के बाद एफपीएस की गणितीय परिभाषा
(1) fps[i] = i /(f[0] + ... + f[i-1])
होगा और एक ही सूत्र है, लेकिन केवल मैं -1 फ्रेम पर विचार।
(2) fps[i-1] = (i-1)/(f[0] + ... + f[i-2])
अब चाल यहाँ इस तरह से है कि यह सूत्र (2) के दाईं ओर होते हैं और यह स्थानापन्न के लिए यह पक्ष बचा है जाएगा में सूत्र (1) के दाईं ओर संशोधित करने के लिए है।
इसलिए की तरह (आप इसे और अधिक स्पष्ट रूप से देखने चाहिए, अगर आप एक कागज पर लिख):
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)
तो इस सूत्र के अनुसार (मेरी गणित कौशल पाने के लिए थोड़ा ज़ंग हालांकि रहे हैं), नई गणना करने के लिए एफपीएस आपको पिछले फ्रेम से एफपीएस जानने की जरूरत है, जो अंतिम फ्रेम और आपके द्वारा प्रदान किए गए फ्रेम की संख्या को प्रस्तुत करने के लिए लिया गया अवधि है।
स्रोत
2011-10-17 16:14:53
फिर मूर्खतापूर्णता और साफ-सफाई के लिए, शायद आप फ्लोट वजन Ratio = 0.1; और समय = समय * (1.0 - weightRatio) + last_frame * weightRatio – korona
सिद्धांत में अच्छा और सरल लगता है, लेकिन हकीकत में इस दृष्टिकोण की चिकनाई शायद ही ध्यान देने योग्य है। अच्छा नहीं। – Petrucio
@ पेट्रूसियो यदि चिकनाई बहुत कम है, तो बस समय निरंतर क्रैंक करें (weightRatio = 0.05, 0.02, 0.01 ...) –