즉시 모드 GUI
Immediate mode GUI즉시 모드 그래픽 사용자 인터페이스(GUI)는 IMGUI라고도 하며 즉시 모드 그래픽 라이브러리를 사용하여 GUI를 작성하는 그래피컬 사용자 인터페이스 설계 패턴입니다.그래픽 라이브러리에서 API 설계의 또 다른 주요 패턴은 [1]유지 모드입니다.
실장
이 섹션은 어떠한 출처도 인용하지 않습니다.(2020년 8월 (이 및 ) |
대부분의 즉시 모드 GUI 위젯 툴킷은 게임 개발, 그래픽 앱, 라이브러리: 스케일 폼 및 친애하는 ImGui를 위한 기본 시스템 컨트롤 및 커스텀 렌더링으로 구현됩니다.
게임 구현을 위해 GUI는 다음과 같이 해야 합니다.
- 게임 장면 또는 복잡한 그래픽과 동기화하여 업데이트됩니다.
- 게임 장면 또는 복잡한 그래픽 위에 겹쳐집니다(GUI와 게임 장면이 모두 게임 루프에 의해 제어되는 경우 두 경우 모두 특히 쉽습니다).
- 특이한 외관을 가지거나 복잡한 그래픽으로 장식됩니다.즉, 즉시 모드 GUI에서는 클라이언트코드가 독자적인 렌더링 프리미티브와 API 설계를 유지하고 있어 그래픽 파이프라인 구현에 영향을 미칩니다.
- 는 위젯 트리가 구성 가능하고 유연하지만 상호 작용하기 어려운 함수 호출 트리인 경우가 많다는 점에서 보다 직접적인 의미를 가집니다.
- 는 덜 복잡하고 이해하기 쉽습니다(툴셋 API 콜당 암묵적인 전제조건이 적다는 점에서).또, 통상은 기능성도 저하합니다.
- 레이아웃(부모 또는 형제자매를 참조하는 절대 및 상대적 위치 설정)을 포함한 단순한 위젯 트리보다 더 많은 도구 세트 API 호출이 필요한 경우 작성 및 관리가 더 정교합니다(일반적으로 더 많은 도구 세트 API 호출 필요).
- 에는 덜 정교한 폐색(z-curroning), 히트-캐스팅, 상태 변경 처리, 스크롤 및 포커스/핫 컨트롤(hot control) 애니메이션이 포함되어 있습니다.이는 논리 트리/시각 트리 자체를 관리할 필요도 있음을 의미합니다.
- 는 새로운 프레임마다 정점 버퍼를 완전히 처음부터 재구축해야 합니다.
- 는 GPU에 로드된 셰이더를 사용하지 않으면 CPU에 일정한 워크로드를 가할 수 있습니다.
즉시 모드 GUI 위젯 툴킷은 간단하고 쉽게 변경할 수 있으며 확장 가능한 GUI 툴킷을 원하는 사용자에게 적합합니다.일반적으로 범용, 오픈 소스 및 크로스 플랫폼입니다.렌더링 엔진에서 GUI가 그려지는 방법을 직접 제어할 수 없기 때문에 즉시 모드 GUI의 유연성과 컴포넌트를 얻을 수 있는 한 가지 방법은 React가 가상 DOM을 사용하는 것과 마찬가지로 가상 위젯 트리를 사용하는 것입니다.
역사
Casey Muratori는 이 기술을 개발하고 이를 [2][3]설명하기 위해 "Single-path Immediate Mode Graphical User Interface"라는 용어를 만들었습니다.가장 먼저 공개된 구현 중 하나는 Sean [4]Barrett에 의해 작성되었습니다.
다른 유형의 즉시 모드 GUI
- C++로 작성된 ImGui 님께[5], 여러 그래픽 API(Allegro 5, DirectX, GLFW, iOS, Marmalade, Metal, OpenGL, SDL 2 및 Vulkan)의 백엔드와 함께 다음과 같은 기능을 제공합니다.
- 녹을[7] 위한 egui
- Gio[8] for Go
- SDL의[9] kiss_sdl(심플 다이렉트 미디어 레이어)
- 여러[10] 그래픽 라이브러리(Direct3D, GLFW, OpenGL, SDL, SFML, Wayland, Windows GDI, Windows GDI+ 및 X11)용 백엔드 포함 nuklear
레퍼런스
- ^ Radich, Quinn (May 30, 2018). "Retained Mode Versus Immediate Mode". Win32 apps. Microsoft. Retrieved 21 December 2019.
- ^ "Immediate-Mode Graphical User Interfaces (2005)". Immediate-Mode Graphical User Interfaces (2005). Retrieved 2021-06-15.
- ^ Barrett, Sean (September 2005). "Immediate Mode GUIs" (PDF). Game Developer. Vol. 12. p. 34-36. Retrieved 14 February 2021.
- ^ "Sample IMGUI implementation and demo program". silverspaceship.com. Retrieved 2021-06-15.
{{cite web}}: CS1 maint :url-status (링크) - ^ Cornut, Omar (2019-12-22). "ocornut/imgui: Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies".
- ^ kotlin-graphics (2019-12-19). "kotlin-graphics/imgui: Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)".
- ^ "egui: an easy-to-use immediate mode GUI in pure Rust". 3 June 2021.
- ^ "Gio - immediate mode GUI in Go". giDoui.org. Retrieved 2019-11-14.
- ^ Korrovits, Tarvo (2019-12-19). "actsl/kiss_sdl: Simple generic GUI widget toolkit for SDL2".
- ^ Mettke, Micha (2019-12-22). "vurtun/nuklear: A single-header ANSI C gui library".