Русская Википедия:Графический интерфейс немедленного режима
IMGUI (immediate mode graphic user interface, Графический интерфейс немедленного режима) представляет собой шаблон проектирования графического пользовательского интерфейса, который использует API немедленного режима для отображения элементов управления, в отличие от сохраненного режима .[1]
Реализации
Большая часть инструментария виджетов IMGUI реализована в системных элементах управления по умолчанию и пользовательском рендеринге для разработки игр и графических приложений. Самая популярная реализация — библиотека Dear ImGui.
Для реализации видеоигры, пользовательский интерфейс должен:
- обновляться синхронно с игровой сценой или сложной графикой.
- быть наложенным поверх игровой сцены или сложной графики (что особенно легко в обоих случаях тогда, когда и GUI, и игровая сцена управляются одним циклом).
- иметь необычный внешний вид. Это означает, что в пользовательском интерфейсе непосредственного режима клиентский код содержит свои собственные примитивы рендеринга и дизайн API, которые влияют на реализацию графического конвейера .
Инструментарий виджета GUI непосредственного режима
- является более прямым в том смысле, что дерево виджетов часто представляет собой дерево вызовов функций, которое является составным и гибким, но с которым трудно взаимодействовать.
- менее сложный и простой для понимания (с точки зрения меньшего количества неявных предположений на вызов API набора инструментов). Обычно это также приводит к меньшей функциональности.
- является более сложным для создания и управления (обычно требуется больше вызовов API для управления виджетами), чем простое дерево виджетов, включая макет (абсолютное и относительное позиционирование со ссылкой на родителя или братьев и сестер).
- имеет менее сложную окклюзионную отбраковку (z-буферизацию), проверку попадания, обработку изменения состояния, прокрутку и анимацию фокуса/управления горячими клавишами (виджет). Это также подразумевает необходимость управления самим логическим/визуальным деревом.
- приходится полностью перестраивать буферы вершин с нуля для каждого нового кадра .
- может создать постоянную нагрузку на ЦП, если не использовать шейдеры, загруженные на ГП .
Наборы инструментов для виджетов с графическим интерфейсом в немедленном режиме — хороший выбор для тех, кто предпочитает простой, легко изменяемый и расширяемый графический инструментарий. Обычно они являются универсальными, с открытым исходным кодом и кроссплатформенными. Одним из способов обеспечить гибкость и компоновку графического интерфейса в немедленном режиме без недостатков, связанных с сохранением дерева виджетов только в вызовах функций, при отсутствии прямого контроля над тем, как графический интерфейс отрисовывается в движке рендеринга, было бы использование виртуального дерева виджетов, точно так же, как React использует виртуальный DOM.
История
Кейси Муратори разработал эту технику и ввел термин «Графический пользовательский интерфейс в одноканальном (singlepath) режиме немедленного доступа» для ее описания.[2] Одна из самых ранних общедоступных реализаций была написана Шоном Барреттом.[3]
Другие типы графического интерфейса немедленного режима
- Dear ImGui[4], написанный на C++ и поддерживающий несколько графических API (Allegro 5, Direct3D 9/10/11/12, GLFW, iOS, Marmalade, Metal, OpenGL, SDL2 и Vulkan), который также имеет:
- Gio[7] для Go
- kiss_sdl[8] для SDL
- nuklear[9]с бэкендами для нескольких графических библиотек (Direct3D, GLFW, OpenGL, SDL, SFML, Wayland, Windows GDI, Window GDI+ и X11)
Примечания
Шаблон:Примечания Шаблон:Изолированная статья
- Страницы с игнорируемыми отображаемыми названиями
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Графический интерфейс пользователя
- Компьютерная графика
- API
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии