"ডেল্টা সময়" দুটি ফ্রেম আপডেটের মধ্যে সময় অতিবাহিত হত (তবে এটি অন্যান্য প্রসঙ্গেও ব্যবহৃত হতে পারে; এটি সাধারণত একটি সময়ের বিয়োগের ফলাফল)।
আপনি গ্লুটগেট পদ্ধতি এবং 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
}
আপনি এটি প্রায় একইভাবে করতে পারেন, ঘড়ির সাথে সি / সি ++ সিটিএম লাইব্রেরি ব্যবহার করে () এবং ম্যাক্রো ধ্রুবক অভিব্যক্তি CLOCKS_PER_SEC যা একটি ঘড়ির টিক এবং সেকেন্ডের মধ্যে সম্পর্ক নির্দিষ্ট করে।
মূলত, আপনি একটি স্থায়ী সময়ের মানটি ব্যবহার না করে এই বিচ্ছিন্ন সময়ের সাথে অনুপাতের সাথে আপনার চলনগুলি আপডেট করতে ডেল্টটাইম ব্যবহার করতে পারেন। এইভাবে, আপনার প্রোগ্রামটি 60 fps বা 10 fps এ চলে যদি আপনার চরিত্রের চলনের গতি প্রায় একই হওয়া উচিত almost
এখানে একটি ছোট উদাহরণ রয়েছে: ধরুন আপনি x অক্ষের উপর প্রতি সেকেন্ডে 10 ইউনিট দিয়ে কিছু সরিয়ে নিতে চান। আপনি এর মতো কিছু করতে পারেন (যদি ডেল্টটাইম প্রকৃতপক্ষে মিলিসেকেন্ড ব্যবহার করে)।
Position.x += 10/1000 * deltaTime;
এইভাবে, আপনার প্রোগ্রামটি 2 বার বা 100 বার আপডেট হয়েছে কিনা, 1 সেকেন্ড পরে অবস্থানটি প্রায় একই রকম হওয়া উচিত এবং গেম-প্লেতে কোনও নির্দিষ্ট কম্পিউটারের নীচের fps দ্বারা এটি নির্দিষ্ট মান ব্যবহার না করে কম প্রভাবিত করে।
অবশেষে, আপনার গেমদেব.স্ট্যাকেক্সেঞ্জে স্থির সময় পদক্ষেপ বনাম চলক সময়ের ধাপ পড়তে হবে।