Что такое ImGui? Dear ImGui: объяснение (2026)

ImGui (Dear ImGui) — это библиотека GUI для C++ с немедленным режимом отрисовки. Она отрисовывает меню каждый кадр без сохранения дерева виджетов, что часто встречается в игровых инструментах и нативных клиентах.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) — это небольшая библиотека GUI для C++, работающая по принципу немедленного режима.
  • Она отрисовывает меню заново каждый кадр посредством вызовов функций, без необходимости поддерживать дерево виджетов.
  • Нативные клиенты и инструменты выбирают её для отрисовки с низкой задержкой поверх 3D-сцены.
  • Это паттерн C++; Java Fabric мод использует собственные хуки GUI игры вместо этого.

ImGui, сокращенно Dear ImGui, — это небольшая библиотека GUI для C++, работающая по принципу немедленного режима. Она отрисовывает меню заново каждый кадр, используя простые вызовы функций вместо хранения дерева объектов виджетов. Это позволяет быстро настроить интерфейс и легко интегрировать его в существующий рендеринг игры, что и объясняет, почему инструменты и нативные клиенты используют её для создания быстрых наложений.

Где используется Opal

Opal — это мод для Fabric, поэтому он строит свой интерфейс, используя собственные хуки GUI игры, а не ImGui. Если вы хотите добавить функции, не затрагивая нативный код, вам следует начать с JavaScript-движка скриптов GraalVM. Ознакомьтесь с руководством по настройке и руководством по скриптам.

Что означает immediate-mode

ImGui перестраивает интерфейс в каждом кадре. Вы не создаете объект кнопки и не храните его. Вы вызываете функцию, которая говорит "нарисуй кнопку здесь", и этот вызов как рисует кнопку, так и сообщает вам, была ли она нажата в этом кадре.

Инструментарий retained-mode работает наоборот. Он хранит в памяти долгоживущее дерево виджетов и обновляет его при изменении состояния. Immediate-mode жертвует этой постоянной структурой ради кода, который читается сверху вниз и находится рядом с вашим собственным состоянием.

Почему инструменты и клиенты выбирают его

ImGui популярен для меню, которые накладываются на 3D-сцену. Причины практичны.

  • Низкая задержка: он подключается к кадру, который программа уже отрисовывает, поэтому меню реагирует немедленно.
  • Мало "склейки": окно и несколько элементов управления — это всего лишь несколько вызовов функций. Нет файла макета и нет отдельного потока пользовательского интерфейса для управления.
  • Самодостаточный: библиотека имеет мало зависимостей и встраивается в распространенные графические бэкенды, поэтому она не подтягивает тяжелый фреймворк.
  • Удобный для отладки: те же вызовы, которые строят релизное меню, также строят одноразовые панели отладки, которые разработчики используют при создании функции.

Immediate-mode против retained-mode

АспектРежим немедленной отрисовки (ImGui)Инструментарий с удержанием состояния
Владение состояниемВаш код хранит данныеИнструментарий хранит дерево виджетов
Работа на кадрПерестраивайте UI каждый кадрОбновляйте дерево при изменении
Начальные затратыНесколько вызовов функцийБольшая структура в начале
Наилучшее соответствиеНаложения, инструменты, игровые менюБольшие приложения в стиле документов

Как это подходит для нативного клиента

Нативный утилитарный клиент, созданный на C++, часто отрисовывает свое меню с помощью ImGui поверх кадра игры. Код меню выполняется внутри цикла отрисовки, считывает собственные настройки клиента и записывает изменения непосредственно обратно. Отдельного UI-процесса нет, поэтому переключение функции сводится к одному вызову функции для значения, которым клиент уже владеет.

Это шаблон C++. Мод Fabric, написанный на Java, обращается к своему интерфейсу через собственные GUI-хуки игры, поэтому ImGui в основном встречается в клиентах, поставляемых в виде нативного кода, а не в виде Java-модов.

FAQ