Imgui самп как установить

Обновлено: 02.07.2024

Каждый из вас задавался вопросом как установить и подключить ImGui в любом DirectX Hook на C++ в этом видео я вам покажу как подключить Имгуй к вашему проекту и использовать функционал Imgui а так же вы можете прочитать официальную документацию

Установка Lua скриптов для GTA San Andreas

Если мод не работает или данная инструкция не помогла вам в установке, вы можете обратиться в нашу группу во Вконтакте , где вам обязательно помогут.

Данная статья — вольный перевод моей статьи на русский с некоторыми небольшими изменениями и улучшениями. Хотелось бы показать как просто и полезно использовать ImGui с SFML. Приступим.


При разработке игр очень важно иметь хорошие инструменты для создания контента (редактор уровней, ресурсов и пр.), а также для дебаггинга. Наличие данных вещей повышает производительность и креативность. Гораздо проще отлавливаются баги и исправляются уже найденные: легко выводить значение различных переменных, а также создавать виджеты для их изменения, чтобы посмотреть, что происходит с игрой при определённых их значениях. Виджеты для изменения переменных также очень полезны для полировки геймплея. Например, можно легко изменять скорость передвижения персонажей, скорость перезарядки оружия и пр.

Вот какие инструменты я создал с помощью ImGui для своей игры:

Как можно видеть, в ImGui есть достаточно разных виджетов, чтобы создавать полезные и удобные интерфейсы.

Immediate mode GUI немного отличается от классической методики программирования интерфейсов, которая называется retained mode GUI. ImGui виджеты создаются и рисуются в каждом кадре игрового цикла. Сами виджеты не хранят внутри себя своё состояние, либо хранят абсолютно минимальный необходимый минимум, который обычно скрыт от программиста.

В отличие от того же Qt, где для создания кнопки нужно создавать объект QPushButton , а затем связывать с ней какую-нибудь функцию-callback, вызываемую при нажатии, в ImGui всё делается гораздо проще. В коде достаточно написать:

Данный код должен вызываться в каждой итерации игрового цикла, в которой эта кнопка должна быть доступна пользователю.

Изначально данный концепт может показаться странным и очень неэффективным, однако это всё работает так быстро в сравнении с остальным кодом, что в результате даже сложные интерфейсы не привносят сильных изменений в производительность игры.

Советую посмотреть вот это видео Кейси Муратори про ImGui, если вы хотите узнать чуть больше о данной методике.

Итак, каковы же достоинства ImGui?

  • MIT-лицензия
  • Очень быстрая и занимает мало памяти
  • Постоянно обновляется и расширяется
  • Почти не производит динамическую аллокацию/деалокаццию (и это можно контролировать, устанавливая каким образом ImGui будет получать необходимую память)
  • Очень портабельна: есть множество биндингов для различных библиотек и платформ
  • Очень легко расширяется путём создания новых виджетов на основе существующих, либо написанных с нуля.
  1. Создайте простую программу на SFML, которая показывает пустое окно. Если вы раньше этим не занимались, то можете воспользоваться туториалом.
  2. Скачайте ImGui.
  3. Скачайте ImGui SFML биндинг и положите его в папку, в которую скачали ImGui.
    Важно: добавьте содержимое imconfig-SFML.h в imconfig.h
  4. Добавьте папку ImGui в include директории вашего проекта

Добавьте следующие файлы в билд вашего проекта:

  • imgui.cpp
  • imgui_draw.cpp
  • imgui-SFML.cpp
  • imgui_demo.cpp

Вот небольшой пример кода, который создаёт окошко ImGui и позволяет менять цвет заднего фона и заголовок окна. Объяснения того, что происходит, будут далее.

Вы должны увидеть что-то вроде этого:


Попробуйте изменить что-нибудь. Если кликнуть два раза на одно из полей RGB, то можно ввести соответствующее значение. Если одно из полей потянуть, то можно плавно изменять текущее введённое значение. Поле ввода позволяет изменить заголовок окна после нажатия на кнопку.


Отлично, теперь разберёмся как всё работает.

ImGui инициализируется вызовом ImGui::SFML::Init , при вызове в функцию передаётся ссылка на окно sf::RenderWindow . В этот момент также создаётся стандартный шрифт, который будет использоваться в дальнейшем. (см. раздел Fonts how-to в описании imgui-sfml, чтобы увидеть как использовать другие шрифты).

При выходе из программы важно вызывать функцию ImGui::SFML::Shutdown , которая освобождает ресурсы, которые использует ImGui.

В игровом цикле ImGui имеет две фазы: обновление и рендеринг.

Обновление состоит из обработки событий, обновления состояния ImGui и обновления/создания виджетов. Обработка событий происходит через вызов ImGui::SFML::ProcessEvent . ImGui обрабатывает события клавиатуры, мыши, изменения фокуса и размера окна. Обновление состояния ImGui производится в ImGui::SFML::Update , в неё передаётся delta time (время между двумя обновлениями), который ImGui использует для обновления состояния виджетов (например, для анимации). Также в данной функции вызывается ImGui::NewFrame , после вызова которой уже можно создавать новые виджеты.

Рендеринг ImGui осуществляется вызовом ImGui::SFML::Render . Очень важно создавать/обновлять виджеты между вызовами ImGui::SFML::Update и ImGui::SFML::Render , иначе ImGui будет ругаться на нарушение состояния.

Если вы рендерите реже, чем обновляете ввод и игру, то в конце каждой итерации вашего update необходимо также вызывать ImGui::EndFrame :

Виджеты создаются путём вызова соответствующих функций (например, ImGui::InputInt или ImGui::Button ). Если вызвать ImGui::ShowTestWindow , то можно увидеть много примеров использования ImGui, весь код можно найти в imgui_demo.cpp.

Для SFML в биндинге были созданы некоторые перегрузки функций, например в ImGui::Image и ImGui::ImageButton можно кидать sf::Sprite и sf::Texture , также можно легко рисовать линии и прямоугольники вызовом DrawLine , DrawRect и DrawRectFilled .

Вот такая библиотека: проста в использовании и настройке, и очень полезна для создания инструментов и дебагинга. Приятного использования!

darwinuser

Похожие темы

На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

CleanLegend

Известный

Для начала нужно скачать пустой проект SF, это можно сделать в этой теме .
Открываем проект и в начало сразу вставляем:

Для подключения ImGui нам понадобиться каллбеки на present, reset, wndproc.
Present:


Теперь можно перейти к подключению ImGui. Скачиваем и распаковываем в папке с проектом эти файлы:

Переходим в папку examples и добавляем в проект 4 файла:

После успешного добавления файлов, можно перейти к инициализации, она будет проходить в mainloop.Для инициализации нам нужен hwnd окна и device.

Добавляем выгрузку плагина:

T7Nw8ZG.jpg

На момент написания гайда использовалась версия: 1.63

Известный

kawa operand

перерывпятьминут

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

imring

Metallica

Dark_Knight

Начинаем начинать
Участник

Dark_Knight

Начинаем начинать
Участник


ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?

Dark_Knight

Начинаем начинать

ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?

Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.

Участник

Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.


Если вы столкнулись с проблемой установки Lua скрипта в игру, данная универсальная инструкция поможет вам в этом. Если у вас есть проблемы с определенным модом, вы можете оставить ссылку на него в нашей группе во Вконтакте и мы добавим персональную инструкцию по установке к нему.

Как установить Lua скрипты для GTA San Andreas

Читайте также: