Графический интерфейс немедленного режима - Immediate mode GUI
Эта статья может быть слишком техническим для большинства читателей, чтобы понять. Пожалуйста помогите улучшить это к сделать понятным для неспециалистов, не снимая технических деталей. (Август 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
An графический интерфейс пользователя (GUI) в непосредственном режиме, также известный как IMGUI, это графический интерфейс пользователя шаблон дизайна который использует немедленный режим графическая библиотека для создания графического интерфейса. Другой важный образец API дизайн в графические библиотеки это сохраненный режим.[1]
Реализации
Большинство из немедленный режим GUI набор инструментов для виджетов реализован в системных элементах управления по умолчанию и настраиваемой визуализации для разработка игр, графические приложения, Библиотека: масштабирование и Уважаемый ImGui.
Для реализации игры GUI должен
- обновляться синхронно с игровой сценой или сложной графикой.
- быть наложенным на игровую сцену или сложную графику (что особенно легко в обоих случаях, когда и графический интерфейс, и игровая сцена управляются игровым циклом).
- иметь необычный внешний вид или быть украшены сложной графикой. Это означает, что в немедленный режим GUI, клиент код держит свой собственный рендеринг примитивов и дизайн API, влияющий на графический конвейер выполнение.
В немедленный режим GUI набор инструментов для виджетов
- является более прямым в том смысле, что виджет tree часто представляет собой дерево вызовов функций, которое можно компостировать и гибко, но с которым сложно взаимодействовать.
- менее сложен и проще для понимания (с точки зрения меньшего количества неявных предположений на вызов API набора инструментов). Обычно это также приводит к снижению функциональности.
- более сложен для создания и управления (обычно требуется больше вызовов API набора инструментов), если больше, чем просто виджет дерево, включая макет (абсолютное и относительное позиционирование со ссылкой на родителя или братьев и сестер).
- имеет менее сложные удаление окклюзии (z-буферизация ), хит-тестирование, обработка изменения состояния, прокрутка, и фокус /горячей контроль (виджет ) анимации. Это также подразумевает необходимость управления самим логическим деревом / визуальным деревом.
- необходимо восстановить буферы вершин полностью с нуля для каждой новой Рамка.
- может поставить постоянную нагрузку на ЦПУ если не использовать шейдеры загружен на GPU.
Немедленный режим GUI наборы инструментов для виджетов являются хорошим выбором для тех, кто предпочитает простой, легко изменяемый и расширяемый инструментарий графического интерфейса. Обычно они бывают универсальными, с открытым исходным кодом и кросс-платформенными. Один из способов получить гибкость и компонуемость немедленный режим GUI без недостатков сохранения виджет дерево только в вызовах функций, при отсутствии прямого контроля над тем, как GUI нарисован в рендеринг движок будет использовать виртуальный виджет дерево, как и Реагировать использует виртуальный ДОМ.
История
Первоначальный инструментарий графического интерфейса Immediate Mode: imgui Микко Мононен[2] который основан на OpenGL. Идею популяризировал Кейси Муратори.
Другие типы графического интерфейса непосредственного режима
- ядерный[3] с бэкэндами для нескольких графических библиотек (Direct3D, GLFW, OpenGL, SDL, SFML, Wayland, Windows DGI, Окно GDI + и X11 )
- kiss_sdl[4] за SDL (Простой слой Direct Media)
- Gio[5] за Идти
- Уважаемый ImGui[6] написан на C ++ с бэкэндами для нескольких графических API (Аллегро 5 , DirectX, GLFW, iOS, Мармелад, Металл, OpenGL, SDL 2 и Вулкан ), который также имеет
Рекомендации
- ^ Радич, Куинн (30 мая 2018 г.). «Сохраненный режим против немедленного режима». Приложения Win32. Microsoft. Получено 21 декабря 2019.
- ^ Мононен, Микко (18 декабря 2019). «AdrienHerubel / imgui: небольшой мультиплатформенный графический пользовательский интерфейс в немедленном режиме с бэкэндом OpenGL3.2».
- ^ Меттке, Миха (22 декабря 2019). "vurtun / nuklear: GUI-библиотека ANSI C с одним заголовком".
- ^ Корровиц, Тарво (19.12.2019). "actl / kiss_sdl: Простой универсальный набор инструментов виджетов GUI для SDL2".
- ^ "Gio - графический интерфейс непосредственного режима в Go". gioui.org. Получено 2019-11-14.
- ^ Корнут, Омар (22 декабря 2019 г.). "ocornut / imgui: Уважаемый ImGui! Графический пользовательский интерфейс немедленного режима без раздувания для C ++ с минимальными зависимостями".
- ^ kotlin-graphics (19.12.2019). "kotlin-graphics / imgui: Графический пользовательский интерфейс немедленного режима без раздувания для JVM с минимальными зависимостями (переписывание дорогой imgui)".