LINUX.ORG.RU

История изменений

Исправление a1ba, (текущая версия) :

Для этого у меня есть переменная которая хранит время чисто игрового кадра.

Если задача синхронизироваться по 60 тикам в секунду, а это 16.(6) миллисекунд, то из него вычитается чистое время кадра и небольшое окно для переключения в busy-wait. Окно можно двигать в зависимости от графика времени кадра, но у меня пока что проще.

Допустим, время кадра 1мс и окно например три таких кадра, то есть 3мс. Вычитая, получается 12.(6) мс. Далее, можно в этом интервале прогонять sleep, замеряя время самого sleep.

В конце концов получается не нагружающий CPU поток в котором крутится игровая логика, к тому же без попытки использовать платформо-специфичный HPET.

Кстати, забавно, но в моих экспериментах задержка в Windows была гораздо больше, чем в Linux.

Исправление a1ba, :

Для этого у меня есть переменная которая хранит время чисто игрового кадра.

Если задача синхронизироваться по 60 тикам в секунду, а это 16.(6) миллисекунд, то из него вычитается чистое время кадра и небольшое окно для переключения в busy-wait. Окно можно двигать в зависимости от графика кадра.

Допустим, время кадра 1мс и окно например три таких кадра, то есть 3мс. Вычитая, получается 12.(6) мс. Далее, можно в этом интервале прогонять sleep, замеряя время самого sleep.

В конце концов получается не нагружающий CPU поток в котором крутится игровая логика, к тому же без попытки использовать платформо-специфичный HPET.

Кстати, забавно, но в моих экспериментах задержка в Windows была гораздо больше, чем в Linux.

Исходная версия a1ba, :

Для этого у меня есть переменная которая хранит время чисто игрового кадра.

Если задача синхронизироваться по 60 тикам в секунду, а это 16.(6) миллисекунд, то из него вычитается чистое время кадра и небольшое окно для переключения в busy-wait.

Допустим, время кадра 1мс и окно например три таких кадра, то есть 3мс. Вычитая, получается 12.(6) мс. Далее, можно в этом интервале прогонять sleep, замеряя время самого sleep.

В конце концов получается не нагружающий CPU поток в котором крутится игровая логика, к тому же без попытки использовать платформо-специфичный HPET.

Кстати, забавно, но в моих экспериментах задержка в Windows была гораздо больше, чем в Linux.