Ограничитель частоты кадров для этой игры, в которой я выполняю кодирование, вызывает некоторые довольно раздражающие проблемы с точностью в определенных кадрах. Я почесывал голову, пытаясь придумать лучший способ написать это, но лучшее, что я придумал, все еще довольно неточно. Мне было интересно, может ли кто-нибудь дать мне пару идей о том, как переписать эту короткую часть, чтобы быть более точным.Проблема с ограничением частоты кадров (неточно)
//g_dwLastfps & currenttime are equal to timeGetTime()
float fFrameLimit = 0;
if (g_nFrameLimitValue > 0) //g_nFrameLimitValue = user defined
fFrameLimit = 1000/g_nFrameLimitValue;
while ((currentTime - g_dwLastTime) < fFrameLimit)
{
// -1 = wait an extra ms. seemed to help accuracy some
Sleep((float)fFrameLimit - ((currentTime - g_dwLastTime)) - 1);
currentTime = timeGetTime();
}
g_dwLastTime = currentTime;
Но, не используя результат сна в том же номере, что я частотой кадров я бегу в настоящее время (пользователь может выбрать anythign до 1000fps, из-за ВЗ, как анимации реагируют на FrameRate изменения. Некоторые игроки предпочитают супер высокие темпы движения кадров b/c выглядят более гладкими, в то время как другие предпочитают нормальную частоту кадров)? – Jeff
Подождите, что здесь конкретно? Конечно, 1000 кадров в секунду будет выглядеть более плавным, чем 30 кадров в секунду. – CoffeeandCode
И «спать» не будет узким местом ... если явно не указано – CoffeeandCode