"डेल्टा समय" दो फ़्रेम अपडेट के बीच का समय व्यतीत करता था (लेकिन इसका उपयोग अन्य संदर्भों में भी किया जा सकता है; यह आमतौर पर एक समय घटाव का परिणाम होता है)।
आप ग्लूटेट विधि और GLUT_ELAPSED_TIME पैरामीटर का उपयोग करके ग्लूट में डेल्टा समय प्राप्त कर सकते हैं , साथ ही अन्य ऑपरेशन भी कर सकते हैं।
निम्न पंक्ति मिलीसेकंड की संख्या लौटाती है क्योंकि ग्लूटइनिट कहा जाता था (या ग्लूटगेट पर पहली कॉल करें (GLUT_ELAPSED_TIME)):
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
इसलिए यदि आप प्रत्येक रेंडरिंग लूप में वर्तमान टाइमस्टैनस्टार्ट को पंजीकृत करते हैं, तो आप पुराने को नए से घटाकर डेल्टा को जान सकते हैं।
int oldTimeSinceStart = 0;
while( ... )
{
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
int deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
//... stuff to update using deltaTime
}
आप इसे लगभग उसी तरह भी कर सकते हैं, घड़ी के साथ C / C ++ CIME लाइब्रेरी का उपयोग करके () और स्थिरांक स्थिर अभिव्यक्ति CLOCKS_PER_SEC जो घड़ी की टिक और दूसरे के बीच संबंध को निर्दिष्ट करता है।
मूल रूप से, आप एक निश्चित समय मान का उपयोग करने के बजाय इस बीते समय के अनुपात में अपने आंदोलनों को अपडेट करने के लिए डेल्टा का उपयोग कर सकते हैं। इस तरह, यदि आपके प्रोग्राम को 60 एफपीएस पर चलाया जाता है या 10 एफपीएस पर चलता है, तो आपके चरित्र की गति की गति लगभग समान होनी चाहिए।
यहाँ एक छोटा सा उदाहरण है: मान लीजिए कि आप x अक्ष पर प्रत्येक सेकंड 10 इकाइयों द्वारा कुछ स्थानांतरित करना चाहते हैं। आप ऐसा कुछ कर सकते हैं (यदि डेल्टा वास्तव में मिलीसेकंड का उपयोग करता है)।
Position.x += 10/1000 * deltaTime;
इस तरह, चाहे आपका कार्यक्रम 2 बार या 100 बार अपडेट किया गया हो, 1 सेकंड बाद में स्थिति लगभग समान होनी चाहिए, और गेम-प्ले एक छोटे कंप्यूटर के कम एफपीएस से कम प्रभावित होता है, अगर यह निश्चित मानों का उपयोग करता है।
अंत में, आपको gamedev.stackexchange पर निश्चित समय चरण बनाम चर समय चरण पढ़ना चाहिए ।