Okamžité grafické uživatelské rozhraní - Immediate mode GUI
tento článek může být pro většinu čtenářů příliš technická na to, aby je pochopili. Prosím pomozte to vylepšit na aby to bylo srozumitelné pro neodborníky, aniž by byly odstraněny technické podrobnosti. (Srpna 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) |
An grafické uživatelské rozhraní (GUI) v okamžitém režimu, také známý jako IMGUI, je grafické uživatelské prostředí návrhový vzor který používá okamžitý režim grafická knihovna pro vytvoření GUI. Další hlavní vzor API design v grafické knihovny je zachovaný režim.[1]
Implementace
Většina okamžitý režim GUI sada nástrojů widget je implementován do výchozích ovládacích prvků systému a vlastního vykreslování pro vývoj her, grafické aplikace, Library: Scale form a Dear ImGui.
Pro implementaci hry, a GUI by měl
- být aktualizovány synchronizovaně s herní scénou nebo komplexní grafikou.
- být překryty na herní scéně nebo složité grafice (což je obzvláště snadné v obou případech, když je grafické rozhraní i herní scéna ovládána herní smyčkou).
- mají neobvyklý vzhled nebo mají komplexní grafiku. To znamená, že v okamžitý režim GUI klient kód má svůj vlastní vykreslování primitiv a design API, který ovlivňuje grafický kanál implementace.
The okamžitý režim GUI sada nástrojů widget
- je přímější v tom smyslu, že widget strom je často strom volání funkcí, který je kompostovatelný a flexibilní, ale je těžké s ním komunikovat.
- je méně složitý a srozumitelnější (z hlediska menšího počtu implicitních předpokladů na volání API sady nástrojů). To obvykle také vede k menší funkčnosti.
- je složitější vytvářet a spravovat (obvykle vyžaduje více volání API sady nástrojů), pokud je více než jednoduché widget strom, včetně rozložení (absolutní a relativní umístění vztahující se k rodiči nebo sourozencům).
- má méně sofistikované zabíjení okluze (z-buffering ), testování zásahů, zpracování změn stavu, rolování, a soustředit se /horký řízení (widget ) animace. To také znamená potřebu spravovat samotný logický strom / vizuální strom.
- musí přestavět vrcholové vyrovnávací paměti úplně od nuly pro každou novou rám.
- může dát konstantní zátěž na procesor pokud nepoužíváte shadery naloženo na GPU.
Okamžitý režim GUI sady nástrojů pro widgety jsou dobrou volbou pro ty, kteří dávají přednost jednoduché, snadno vyměnitelné a rozšiřitelné sadě nástrojů GUI. Obvykle jsou obecné, open-source a cross-platform. Jeden způsob, jak mít flexibilitu a skladatelnost okamžitý režim GUI bez nevýhod zachování widget strom pouze ve volání funkcí, s nedostatkem přímé kontroly toho, jak GUI je nakreslen v vykreslování motorem by bylo použít virtuální widget strom, jako Reagovat používá virtuální DOM.
Dějiny
Originální sada nástrojů GUI pro okamžitý režim je imgui Mikko Mononen[2] který je založen na OpenGL. Nápad popularizoval Casey Muratori.
Další typy grafického uživatelského rozhraní okamžitého režimu
- nuklear[3] s backendy pro několik grafických knihoven (Direct3D, GLFW, OpenGL, SDL, SFML, Wayland, Okna DGI, Okno GDI + a X11 )
- kiss_sdl[4] pro SDL (Simple Direct Media Layer)
- Gio[5] pro Jít
- Vážení ImGui[6] napsaný v C ++ s back-endy pro několik grafických API (Allegro 5 , DirectX, GLFW, iOS, Marmeláda, Kov, OpenGL, SDL 2 a Vulkan ), který také má
Reference
- ^ Radich, Quinn (30. května 2018). „Zachovaný režim versus okamžitý režim“. Aplikace Win32. Microsoft. Citováno 21. prosince 2019.
- ^ Mononen, Mikko (2019-12-18). „AdrienHerubel / imgui: Malé multiplatformní grafické uživatelské rozhraní okamžitého režimu s backendem OpenGL3.2“.
- ^ Mettke, Micha (22. 12. 2019). "vurtun / nuklear: Jednohlavičková knihovna ANSI C gui".
- ^ Korrovits, Tarvo (2019-12-19). "actl / kiss_sdl: Jednoduchá obecná sada nástrojů widgetu GUI pro SDL2".
- ^ „Gio - okamžité grafické uživatelské rozhraní v prostředí Go“. gioui.org. Citováno 2019-11-14.
- ^ Cornut, Omar (2019-12-22). "ocornut / imgui: Vážený ImGui: Beznadějný okamžitý režim Grafické uživatelské rozhraní pro C ++ s minimálními závislostmi".
- ^ kotlin-graphics (2019-12-19). "kotlin-graphics / imgui: Beznadějný okamžitý režim Grafické uživatelské rozhraní pro JVM s minimálními závislostmi (přepsat drahý imgui)".