มีอย่างน้อยสองวิธีในการดำเนินการ:
อย่างแรกคือสิ่งที่คนอื่นพูดถึงก่อนหน้าฉัน ฉันคิดว่ามันเป็นวิธีที่ง่ายที่สุดและเป็นที่ต้องการ คุณเพียงแค่ติดตาม
- cn: นับจำนวนเฟรมที่คุณแสดงผล
- time_start: เวลานับตั้งแต่คุณเริ่มนับ
- time_now: เวลาปัจจุบัน
การคำนวณ fps ในกรณีนี้ทำได้ง่ายเพียงแค่ประเมินสูตรนี้:
- FPS = cn / (time_now - time_start)
ถ้าอย่างนั้นมีวิธีเจ๋ง ๆ ที่คุณอาจอยากใช้สักวัน:
สมมติว่าคุณมีกรอบ "i" ที่ต้องพิจารณา ฉันจะใช้สัญกรณ์นี้: f [0], f [1], ... , f [i-1] เพื่ออธิบายระยะเวลาในการแสดงผลเฟรม 0, เฟรม 1, ... , เฟรม (i-1 ) ตามลำดับ
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
จากนั้นนิยามทางคณิตศาสตร์ของ fps หลังจาก i เฟรมจะเป็น
(1) fps[i] = i / (f[0] + ... + f[i-1])
และสูตรเดียวกัน แต่พิจารณาเฉพาะเฟรม i-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 จากเฟรมก่อนหน้าระยะเวลาที่ใช้ในการแสดงผลเฟรมสุดท้ายและจำนวนเฟรมที่คุณ แสดงผล