-
Автор темы
- #1
Всех приветствую! Сегодня речь пойдет о работе с библиотекой ImGui, которая нужна для создания пользовательских интерфейсов. В этом гайде я затрону стандартный функционал библиотеки, а также расскажу, как его использовать для реализации ваших фантазий.
Начать стоит с того, что ImGui представляет из себя библиотеку, для отрисовки, которой требуется оверлей. Для данной цели подойдет DirectX или DiscordHook. Затрагивать реализацию оверлея в этой теме мы не будем т.к в большинстве готовых читов это уже реализовано. А значит теперь мы можем перейти к тому, какие функции есть и как они работают.
Начать стоит с главной функции ImGui это
Функция нужна для начала отрисовки меню и имеет большое количество настроек или же флагов. Флаги окна представляют из себя команды, которые прописываются после инициализации функции. Пример:
Разберем аргументы функции. Первый аргумент это название вашего окна, второй булевая переменна для проверки того будет ли окно отрисовано, а затем идут сами флаги окна. Все флаги окна я перечислять не буду, вы можете посмотреть их сами просто поставив запятую после второго аргумента. В нашем случае мы создадим окно с названием "Ваше окно". Затем проверим открыто ли оно с помощью булевой переменной opened и только после проверим флаги нашего окна. В моем случае мы не можем изменить размер, а также свернуть и сохранить функции нашего окна. Перед реализацией этой функции стоит также поставить такие функции как:
С помощью этих функций вы зададите окну стартовую позицию и размер. Затем можно перейти к созданию первого элемента. К примеру создадим кнопку.
Для начала нужно создать функцию, которая определит откуда начать рисовать:
В ImGui используется механика кисточки или же курсора, а все элементы рисуются по его текущей позиции. Мы нарисуем кнопку на координате 36 по X и 22 по Y. Выглядеть это будет примерно вот так:
Теперь создадим кнопку функцией:
Стоит знать, что кнопка вернет True только после нажатии и сделает это один раз, то есть после того как вы отпустите кнопку код выполнен не будет.
Для того, чтобы делать код, который будет выполняться всегда создадим Checkbox. Изменим позицию курсора и нарисуем чекбокс. Не забудьте создать булевую переменную:
После чего у вас появится чекбокс, который по нажатию будет возвращать True, а по повторному нажатию False.
Теперь создадим текст:
Отлично. Теперь у нас кнопка, чекбокс и текст. С помощью этих элементов вы уже можете создать свое первое меню.
Закончим наше меню функцией:
В следующих уроках мы разберем другие элементы ImGui и создадим полноценное меню. Удачи!
Начать стоит с того, что ImGui представляет из себя библиотеку, для отрисовки, которой требуется оверлей. Для данной цели подойдет DirectX или DiscordHook. Затрагивать реализацию оверлея в этой теме мы не будем т.к в большинстве готовых читов это уже реализовано. А значит теперь мы можем перейти к тому, какие функции есть и как они работают.
Начать стоит с главной функции ImGui это
Код:
ImGui::Begin
Код:
ImGui::Begin(xorstr("Ваше окно"), &opened, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoScrollbar);
Код:
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::SetNextWindowSize(ImVec2(ширина, высота));
Для начала нужно создать функцию, которая определит откуда начать рисовать:
Код:
ImGui::SetCursorPos(ImVec2(координата X, координата Y));
Теперь создадим кнопку функцией:
Код:
if (ImGui::Button(xorstr("Some text"), ImVec2(ширина, высота)))
// код при нажатии кнопки
Для того, чтобы делать код, который будет выполняться всегда создадим Checkbox. Изменим позицию курсора и нарисуем чекбокс. Не забудьте создать булевую переменную:
Код:
ImGui::SetCursorPos(ImVec2(позиция x, позиция y));
static bool test = false;
ImGui::Checkbox("Text", &test);
Теперь создадим текст:
Код:
ImGui::SetCursorPos(ImVec2(позиция x, позиция y));
ImGui::Text("Text");
Закончим наше меню функцией:
C++:
ImGui::End();
ImGui::EndFrame();