Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Игровой цикл, delta time, подёргивания и рывки (Решено) (2 стр)

Игровой цикл, delta time, подёргивания и рывки (Решено) (2 стр)

Поделиться

Страницы: 1 2 3 Следующая

Ghost2Постоялецwww17 окт. 201714:23#15
nes

timeGetTime это вынужденная мера, на которую пошли в условиях отсутствия вменяемого источника реального времени и средств управления квантом планировщика на винде. Я вообще не понимаю, как такие функции доступны из под обычного пользователя и воздействующие при этом на всю систему.

Правка: 17 окт. 2017 14:26

ShadowTeologПостоялецwww17 окт. 201721:13#16
0iStalker
Ухудшение производительности максимум на 5 процентов, и повышенное энергопотребление в ненагруженном режиме(то есть когда наш софт не работает)
QueryPerfomanceCounter требует установки affinity на вызывающий поток и стабильной нагрузки на процессор чтобы он не менял частоту в период измерения. Соответсвенно на периодах в пол секунды он может врать в 1.5-2 раза.
Ghost2Постоялецwww18 окт. 20175:16#17
ShadowTeolog

Все эти тезисы описаны где-нибудь в современной литературе?

ХаусПостоялецwww18 окт. 201716:00#18
Холливар древний. QPC vs timeGetTime() vs RTDSD (Или как его там)

ShadowTeolog
> QueryPerfomanceCounter требует установки affinity на вызывающий поток

Да известная тема.

ChebПостоялецwww18 окт. 201717:01#19
>QueryPerfomanceCounter требует установки affinity на вызывающий поток и стабильной нагрузки на процессор чтобы он не менял частоту
Инфа - говно мамонта.
QPC работает на RDTSC, тупо деля её результат на тысячу чтобы у старых программ не рвало шаблон от больших числел (2.5 МГц вместо 2.5 ГГц, например - проверьте, они везде окажутся кратны). RDTSC не зависит от текущей частоты процессора со времён Pentium IV. Вам придётся ограбить музей чтобы найти такой комп, на котором она бы плавала. Я, по крайней мере, не нашёл (там специальный бит в CPUID для индикации этого)
Ghost2Постоялецwww18 окт. 201717:05#20
Cheb

> QPC работает на RDTSC
А вот и не всегда.

innuendoПостоялецwww18 окт. 201719:42#21
Ghost2
> А вот и не всегда.

Этот тезис описан где-нибудь в современной литературе?

Ghost2Постоялецwww18 окт. 201722:32#22
innuendo

В современной литературе описано обратное? Хотя, можно даже приводить сведения из устаревших публикаций, это ещё интереснее.

Правка: 18 окт. 2017 22:35

ShadowTeologПостоялецwww18 окт. 201722:49#23
https://stackoverflow.com/questions/44020619/queryperformancecoun… haves-erratic
Если кратко, то QueryPerfomanceCounter работает через одно место. И на каждой операционке и чипсете -по-разному.
Использовать его допустимо если.
1. Отключено энергосбережение и прочая хрень которая меняет частоты у системы.
2. Измеряемый поток привязан к конкретному ядру
3. Перед использованием, явно идиотские временные отметки выкидываются
Для тестов годиться, но использовать такое "решение" для стабильно работающей на множестве конфигураций и версий винды программы-мазохизм.

Намекаю: об использовании этой функции в MSDN нехилый разветвленный раздел, с подробным описанием как именно она делала вид что работала на разных версиях. Глубина и подробность описания не оставляют никаких сомнений в надежности и предсказуемости функции.

PaulShПостоялецwww19 окт. 20174:00#24
ShadowTeolog
Что-то я не могу найти цитаты из ответа на stackoverflow в статье на MSDN.

В MSDN написано
Do I need to set the thread affinity to a single core to use QPC?
No. For more info, see Guidance for acquiring time stamps. This scenario is neither necessary nor desirable. Performing this scenario might adversely affect your application's performance by restricting processing to one core or by creating a bottleneck on a single core if multiple threads set their affinity to the same core when calling QueryPerformanceCounter.

SuslikМодераторwww19 окт. 20174:20#25
шла вторая страница игнорирования существования std::chrono
PaulShПостоялецwww19 окт. 20174:37#26
Suslik
> шла вторая страница игнорирования существования std::chrono
В VS2015 Update 3 он был через QPC, до Update 3 через... не помню, но баг был (https://connect.microsoft.com/VisualStudio/feedback/details/719443/)
SuslikМодераторwww19 окт. 20174:42#27
PaulSh
> не помню, но баг был
> (https://connect.microsoft.com/VisualStudio/feedback/details/719443/)
тому треду 5 лет. неужели с тех пор кто-то реально столкнулся с настолько серьёзными проблемами стандратного кроссплатформенного решения, что пришлось писать свой трёхколёсный windows-only велик?
Ghost2Постоялецwww19 окт. 20177:56#28
ShadowTeolog

> Использовать его допустимо если.
Не надо путать тики ядра с TSC. Лет уже семь-восемь точно TSC является инвариантным, т.е. не зависящим от частоты процессора и от режима (C-state). QPC при этом может работать совсем не на RDTSC, а на любом таймере от HPET до PIT. В любом случае, никаких других способов точного измерения времени винда не предоставляет. И никакие хаки с квантом времени потока не помогут, если нужна суб-миллисекундная точность.

nesПостоялецwww19 окт. 20178:12#29
Suslik
А осадочек то остался, так что да, для вин онли можно сделать отдельную реализацию.

Страницы: 1 2 3 Следующая

/ Форум / Программирование игр / Общее

2001—2017 © GameDev.ru — Разработка игр