C++ Гайд Работа с ImGui. Урок 1. Стандартный функционал ImGui.

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
19K
Всех приветствую! Сегодня речь пойдет о работе с библиотекой ImGui, которая нужна для создания пользовательских интерфейсов. В этом гайде я затрону стандартный функционал библиотеки, а также расскажу, как его использовать для реализации ваших фантазий.

Начать стоит с того, что ImGui представляет из себя библиотеку, для отрисовки, которой требуется оверлей. Для данной цели подойдет DirectX или DiscordHook. Затрагивать реализацию оверлея в этой теме мы не будем т.к в большинстве готовых читов это уже реализовано. А значит теперь мы можем перейти к тому, какие функции есть и как они работают.

Начать стоит с главной функции ImGui это
Код:
ImGui::Begin
Функция нужна для начала отрисовки меню и имеет большое количество настроек или же флагов. Флаги окна представляют из себя команды, которые прописываются после инициализации функции. Пример:
Код:
ImGui::Begin(xorstr("Ваше окно"), &opened, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoScrollbar);
Разберем аргументы функции. Первый аргумент это название вашего окна, второй булевая переменна для проверки того будет ли окно отрисовано, а затем идут сами флаги окна. Все флаги окна я перечислять не буду, вы можете посмотреть их сами просто поставив запятую после второго аргумента. В нашем случае мы создадим окно с названием "Ваше окно". Затем проверим открыто ли оно с помощью булевой переменной opened и только после проверим флаги нашего окна. В моем случае мы не можем изменить размер, а также свернуть и сохранить функции нашего окна. Перед реализацией этой функции стоит также поставить такие функции как:
Код:
ImGui::SetNextWindowPos(ImVec2(0, 0));

ImGui::SetNextWindowSize(ImVec2(ширина, высота));
С помощью этих функций вы зададите окну стартовую позицию и размер. Затем можно перейти к созданию первого элемента. К примеру создадим кнопку.
Для начала нужно создать функцию, которая определит откуда начать рисовать:
Код:
ImGui::SetCursorPos(ImVec2(координата X, координата Y));
В ImGui используется механика кисточки или же курсора, а все элементы рисуются по его текущей позиции. Мы нарисуем кнопку на координате 36 по X и 22 по Y. Выглядеть это будет примерно вот так:
1620815290093.png
Теперь создадим кнопку функцией:
Код:
if (ImGui::Button(xorstr("Some text"), ImVec2(ширина, высота)))

      // код при нажатии кнопки
Стоит знать, что кнопка вернет True только после нажатии и сделает это один раз, то есть после того как вы отпустите кнопку код выполнен не будет.
Для того, чтобы делать код, который будет выполняться всегда создадим Checkbox. Изменим позицию курсора и нарисуем чекбокс. Не забудьте создать булевую переменную:
Код:
ImGui::SetCursorPos(ImVec2(позиция x, позиция y));

static bool test = false;

ImGui::Checkbox("Text", &test);
После чего у вас появится чекбокс, который по нажатию будет возвращать True, а по повторному нажатию False.
Теперь создадим текст:
Код:
ImGui::SetCursorPos(ImVec2(позиция x, позиция y));
ImGui::Text("Text");
Отлично. Теперь у нас кнопка, чекбокс и текст. С помощью этих элементов вы уже можете создать свое первое меню.
Закончим наше меню функцией:
C++:
ImGui::End();
ImGui::EndFrame();
В следующих уроках мы разберем другие элементы ImGui и создадим полноценное меню. Удачи!
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,340
Реакции[?]
2,262
Поинты[?]
166K
Спасибо, но это уже было здесь в 10500+ уроках по имгую. Зачем постить тоже самое в 10501 раз?

Лучше бы объяснил как работать со стилями.
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
19K
Сверху Снизу