2011-04-11 11 views
6
void CalculateFrameRate() 
{  
    static float framesPerSecond = 0.0f;  // This will store our fps 
    static float lastTime = 0.0f;  // This will hold the time from the last frame 
    float currentTime = GetTickCount() * 0.001f;  
    ++framesPerSecond; 
    if(currentTime - lastTime > 1.0f) 
    { 
     lastTime = currentTime; 
     if(SHOW_FPS == 1) fprintf(stderr, "\nCurrent Frames Per Second: %d\n\n", (int)framesPerSecond); 
     framesPerSecond = 0; 
    } 
} 

क्या मुझे यह फ़ंक्शन void play(void) या void display(void) में कॉल करना चाहिए?ओपनजीएल में एफपीएस की गणना कैसे करें?

या इससे कोई फर्क नहीं पड़ता?

+0

'प्ले (शून्य) 'क्या है? ध्यान दें कि चीजें थोड़ा अधिक जटिल हैं क्योंकि जीपीयू अप्रत्याशित हैं: http://stackoverflow.com/questions/8779936/correct-way-to-calculate-the-fps –

उत्तर

4

आपको इसे प्रदर्शन लूप में रखना चाहिए। Here's एक लेख जो गेम लूप की कुछ जटिलताओं को बताता है जिन्हें आपको पढ़ना चाहिए।

1

यदि आपके पास सिंक्रनाइज़ेशन दिनचर्या का कोई भी प्रकार है तो मेरा सुझाव है कि आप इसके बाद कॉल करें, यानी बड़ी गणना से पहले। अन्यथा समय गणना shaky हो सकती है और प्रत्येक लूप के अलग-अलग मान दे सकती है ... और एक नोट, यह अधिकतम करने के लिए एक उतार चढ़ाव वाले एफपीएस की तुलना में स्थिर एफपीएस होना बेहतर है। उतार चढ़ाव भी सूक्ष्म बनाता है दर्शक/खिलाड़ी को पता है कि यह सब एक खेल है और विसर्जन खो गया है।

संबंधित मुद्दे