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

Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Всех приветствую.
Столкнулся с проблемой задержки в лоудере с дизайном гуи.
Использовал: sleep, this_thread::sleep_for(std::chrono::milliseconds());.
При их использовании лоудер начинал лагать, и в конце просто крашился.
Если кто-то сталкивался с подобном прошу поделится решением.
Хорошего настроения!
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как бы, sleep и thread sleep, фризят поток, ты не можешь их использовать во внутренней задержке
 
Эксперт
Статус
Оффлайн
Регистрация
3 Апр 2020
Сообщения
1,163
Реакции[?]
593
Поинты[?]
8K
Всех приветствую.
Столкнулся с проблемой задержки в лоудере с дизайном гуи.
Использовал: sleep, this_thread::sleep_for(std::chrono::milliseconds());.
При их использовании лоудер начинал лагать, и в конце просто крашился.
Если кто-то сталкивался с подобном прошу поделится решением.
Хорошего настроения!
нельзя использовать Sleep!
Делать нужно немного по-другому, юзая слип в мейн потоке ты стопаешь всю прогу.
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
нельзя использовать Sleep!
Делать нужно немного по-другому, юзая слип в мейн потоке ты стопаешь всю прогу.
Дело в том, что использовать нужно в main. Моя задача - сделать задержку между появлением текста.
Возможно ли это вообще ?
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Дело в том, что использовать нужно в main. Моя задача - сделать задержку между появлением текста.
Возможно ли это вообще ?
Можно либо создавать новый поток, внутри которого уже использовать Sleep, либо костылить проверкой на текущее время.
 
Начинающий
Статус
Оффлайн
Регистрация
6 Сен 2020
Сообщения
85
Реакции[?]
7
Поинты[?]
0
Не помню, как я это делал в cpp (GetGlobalTickcount вроде)
Типо как на Ардуино millis() всё
А лучше учи таймеры)
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Возможно ли это вообще ?
Ты не можешь заморозить основной поток, т.к. все обновляется каждый кадр, заморозишь этот поток и обновление будет реже, это означает меньше фпс.
Но ничто не мешает тебе использовать таймеры и каждый кадр проверять что нужное колво времени прошло.
В imgui юзай:
ImGuiIO& io = ImGui::GetIO(); // возвращает ссылку на подсистему ввода/вывода
double time = io.GetTime(); // возвращает текущее время в секундах
Т.е. просто при запуске таймера выставляешь начало = time, затем проверяешь разницу каждый кадр if ((time - начало) > нужного) то запускаешь действие.
Либо при запуске конец = time + через_сколько, затем каждый кадр if (time >= конец) действие.
 
Сверху Снизу