• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

C++ Задержка в лоудере с imgui.

Всем Рептилойдам - Рен ТВ
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
542
Реакции
92
Всех приветствую.
Столкнулся с проблемой задержки в лоудере с дизайном гуи.
Использовал: sleep, this_thread::sleep_for(std::chrono::milliseconds());.
При их использовании лоудер начинал лагать, и в конце просто крашился.
Если кто-то сталкивался с подобном прошу поделится решением.
Хорошего настроения!
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как бы, sleep и thread sleep, фризят поток, ты не можешь их использовать во внутренней задержке
 
Всех приветствую.
Столкнулся с проблемой задержки в лоудере с дизайном гуи.
Использовал: sleep, this_thread::sleep_for(std::chrono::milliseconds());.
При их использовании лоудер начинал лагать, и в конце просто крашился.
Если кто-то сталкивался с подобном прошу поделится решением.
Хорошего настроения!
нельзя использовать Sleep!
Делать нужно немного по-другому, юзая слип в мейн потоке ты стопаешь всю прогу.
 
нельзя использовать Sleep!
Делать нужно немного по-другому, юзая слип в мейн потоке ты стопаешь всю прогу.
Дело в том, что использовать нужно в main. Моя задача - сделать задержку между появлением текста.
Возможно ли это вообще ?
 
Дело в том, что использовать нужно в main. Моя задача - сделать задержку между появлением текста.
Возможно ли это вообще ?
Можно либо создавать новый поток, внутри которого уже использовать Sleep, либо костылить проверкой на текущее время.
 
Не помню, как я это делал в cpp (GetGlobalTickcount вроде)
Типо как на Ардуино millis() всё
А лучше учи таймеры)
 
Возможно ли это вообще ?
Ты не можешь заморозить основной поток, т.к. все обновляется каждый кадр, заморозишь этот поток и обновление будет реже, это означает меньше фпс.
Но ничто не мешает тебе использовать таймеры и каждый кадр проверять что нужное колво времени прошло.
В imgui юзай:
ImGuiIO& io = ImGui::GetIO(); // возвращает ссылку на подсистему ввода/вывода
double time = io.GetTime(); // возвращает текущее время в секундах
Т.е. просто при запуске таймера выставляешь начало = time, затем проверяешь разницу каждый кадр if ((time - начало) > нужного) то запускаешь действие.
Либо при запуске конец = time + через_сколько, затем каждый кадр if (time >= конец) действие.
 
Назад
Сверху Снизу