Вопрос ImGui drawlist в чите

Эксперт
Статус
Оффлайн
Регистрация
13 Сен 2020
Сообщения
1,415
Реакции[?]
712
Поинты[?]
9K
Можно ли рисовать всякие ватермарки, показ скорости, спектаторлисты, бинды и всякие такие штуки через имгуи дравлист? Просто во всех сурсах которые я только видел там какой-то непонятный рендер, у которого мало настроек. Недавно попробовал просто нарисовать полоску на экране - получил краш.
 
Участник
Статус
Оффлайн
Регистрация
26 Мар 2019
Сообщения
707
Реакции[?]
167
Поинты[?]
1K
Можно ли рисовать всякие ватермарки, показ скорости, спектаторлисты, бинды и всякие такие штуки через имгуи дравлист? Просто во всех сурсах которые я только видел там какой-то непонятный рендер, у которого мало настроек. Недавно попробовал просто нарисовать полоску на экране - получил краш.
Можно
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
а теперь как это сделать чтобы не крашило
Тебе нужно генерировать всю геометрию в список отрисовки в потоке игры (т.е. в каком-то хуке), а отрисовывать этот список в потоке отрисовки (в хуке DirectX), иначе если ты попробуешь обратиться к функциям движка из неправильного места это будет приводить к случайным вылетам из-за рассинхронизации (один поток будет читать пока другой в этой же время переписывает данные).
В простом виде это можно сделать через мьютекс, но это убьет производительность, в более сложном виде нужен один список отрисовки в который ты без блокировок рисуешь в потоке игры, затем в конце пытаешься блокировать мьютекс и если удалось то копируешь это в еще один промежуточный список, затем в потоке отрисовки пробуешь так же заблокировать и если удается копируешь в конечный список отрисовки (если нет, то оставляешь конечный без изменений) и отирсовываешь этот конечный, такая схема не будет блокировать потоки на долгое время и производительность останется приемлимой.
 
Сверху Снизу