Всем привет!
Борюсь с микро-рывками скроллинга в своем "движке" (проявляются даже при v-sync on). GameLoop всяко-разно перекраивал - вроде дело не в нём.
Vsync на 60 hz.
Посмотрел тайминги glSwapBuffers - плавают.
В меньшую сторону еще объяснимо (часть времени отъедает геймлогика и системщина), но бывает, что тайминг превышает 16.667мс.
Проскакивают и 17 и 18 мс - есть подозрение, что что-то не так в render pipeline.
Есть ли инструмент диагностики OpenGL 3.0 приложения под Windows, который может дать раскладку по таймингам gl-комманд и показать gl error-ы?
Аналогичное приложение на DX8 работает существенно плавнее и микро-рывки очень очень редко возникают.
Vitorio
если в кадре не происходят ни каких изменений при этом то явно проблема в твоем gameloop'e.
Vitorio
Попробуй фиксированный dt в 16мс.
Aroch
> если в кадре не происходят ни каких изменений при этом то явно проблема в твоем
> gameloop'e
Да, сцена более менее стабильная. Dx8 приложение с таким же геймлупом работает почти без рывков. Возможно в opengl я где то накосячил с подготовкой каких нибудь буфферов или биндингом объектов, вот и хотелось бы через стороннее приложение провести диагностику.
HolyDel
> Попробуй фиксированный dt в 16мс.
С ним получше, но все равно хуже, чем в референсном dx8 приложении.
Vitorio
> вот и хотелось бы через стороннее приложение провести диагностику.
стороннее приложение будет так или иначе влиять на результат.
> с таким же геймлупом работает почти без рывков
так как он выглядит? Давай уже код.
Vitorio
WGL_DOUBLE_BUFFER_ARB в true стоит?
Vitorio
Можно пойти проверенным способом - закомментировать все кроме SwapBuffers, если ок, то поочередно раскомментировать части game loop и смотреть, где происходит лаг.
Или профайлер: https://github.com/bombomby/optick
Спасибо всем за рекомендации!
Для поиска источника проблемы пошел от обратного. Создал минимальное приложение на glfw и выяснил, что это мой ноут такой дерганый на отрисовке через opengl. Direct3d работает стабильнее.
Vitorio
попробуй повысить приоритет и посмотреть как повлияет, возможно винда под капотом как раз делает это для d3d приложений и вытаскивает их в очередь выше других точно с таким же приоритетом, а для opengl наоборот топит вниз :)
Aroch
> попробуй повысить приоритет и посмотреть как повлияет
Хах!:) И правда влияет. С повышенным приоритетом delta time более стабилен. Ох уж этот windows :)
Тема в архиве.