Спасибо за ссылку. Однако все примеры таймеров, приведённые в указанной статье используют только GetTickCount. О взаимодействии с QPF и QPC там не упоминается. Интересно, этот метод вообще ещё используется или он уже «вышел из моды»?
Согласно документации Microsoft частота, возвращаемая QPF определяется при старте операционной системы и больше не меняется. Но в этом обсуждении упоминаются возможные ошибки имплементации QPF на некоторых ситемах и даётся такой совет:
Как правило, timeGetTime лучше всего подходит для тайминга игр — у GetTickCount недостаточно высокое разрешение, а от QPC и RDTSC одни неприятности.
Было бы интересно услышать мнение опытного разработчика игр по этому вопросу.
К сожалению, я не имею опыта в разработке игр и не в курсе всех деталей тайминга игрового цикла. Однако про QueryPerformanceFrequency на одном форуме (нем.) писали, что на современных процессорах возвращаемое им значение может быть меньше настоящей частоты.
Я ставил брейк на вызов QPF и пытался как-то манипулировать значения, но там всё проходит через указатели и методом тыка я там уже не смог ничего решить)
Xref по QPC показывает только два вызова — один находится рядом с QPF и проходится единожды при открытии новой игры. На счёт второго я не углублялся, возможно он в игровом цикле.
При этом xref по GetTickCount выдаёт целую простыню вызовов и многие из них в игровом цикле. Как именно это всё взаимодействует мне тоже интересно узнать…
Спасибо. Да, было бы проще, но тогда всё равно будет выполнена loc_4D1AAA вместе с вызовом ProcessMessages, который приводит к багам во время сетевой игры.
Согласно документации Microsoft частота, возвращаемая QPF определяется при старте операционной системы и больше не меняется. Но в этом обсуждении упоминаются возможные ошибки имплементации QPF на некоторых ситемах и даётся такой совет:
Было бы интересно услышать мнение опытного разработчика игр по этому вопросу.
Я ставил брейк на вызов QPF и пытался как-то манипулировать значения, но там всё проходит через указатели и методом тыка я там уже не смог ничего решить)
Xref по QPC показывает только два вызова — один находится рядом с QPF и проходится единожды при открытии новой игры. На счёт второго я не углублялся, возможно он в игровом цикле.
При этом xref по GetTickCount выдаёт целую простыню вызовов и многие из них в игровом цикле. Как именно это всё взаимодействует мне тоже интересно узнать…