즉시 모드 GUI

Immediate mode GUI
즉시 모드 그래픽스 API의 개요 설명

즉시 모드 그래픽 사용자 인터페이스(GUI)는 IMGUI라고도 하며 즉시 모드 그래픽 라이브러리를 사용하여 GUI를 작성하는 그래피컬 사용자 인터페이스 설계 패턴입니다.그래픽 라이브러리에서 API 설계의 또 다른 주요 패턴은 [1]유지 모드입니다.

실장

대부분의 즉시 모드 GUI 위젯 툴킷은 게임 개발, 그래픽 앱, 라이브러리: 스케일 폼 및 친애하는 ImGui를 위한 기본 시스템 컨트롤 및 커스텀 렌더링으로 구현됩니다.

게임 구현을 위해 GUI는 다음과 같이 해야 합니다.

  • 게임 장면 또는 복잡한 그래픽과 동기화하여 업데이트됩니다.
  • 게임 장면 또는 복잡한 그래픽 위에 겹쳐집니다(GUI와 게임 장면이 모두 게임 루프에 의해 제어되는 경우 두 경우 모두 특히 쉽습니다).
  • 특이한 외관을 가지거나 복잡한 그래픽으로 장식됩니다., 즉시 모드 GUI에서는 클라이언트코드가 독자적인 렌더링 프리미티브와 API 설계를 유지하고 있어 그래픽 파이프라인 구현에 영향을 미칩니다.

즉시 모드 GUI 위젯 툴킷

  • 는 위젯 트리가 구성 가능하고 유연하지만 상호 작용하기 어려운 함수 호출 트리인 경우가 많다는 점에서 보다 직접적인 의미를 가집니다.
  • 는 덜 복잡하고 이해하기 쉽습니다(툴셋 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

레퍼런스

  1. ^ Radich, Quinn (May 30, 2018). "Retained Mode Versus Immediate Mode". Win32 apps. Microsoft. Retrieved 21 December 2019.
  2. ^ "Immediate-Mode Graphical User Interfaces (2005)". Immediate-Mode Graphical User Interfaces (2005). Retrieved 2021-06-15.
  3. ^ Barrett, Sean (September 2005). "Immediate Mode GUIs" (PDF). Game Developer. Vol. 12. p. 34-36. Retrieved 14 February 2021.
  4. ^ "Sample IMGUI implementation and demo program". silverspaceship.com. Retrieved 2021-06-15.{{cite web}}: CS1 maint :url-status (링크)
  5. ^ Cornut, Omar (2019-12-22). "ocornut/imgui: Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies".
  6. ^ kotlin-graphics (2019-12-19). "kotlin-graphics/imgui: Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)".
  7. ^ "egui: an easy-to-use immediate mode GUI in pure Rust". 3 June 2021.
  8. ^ "Gio - immediate mode GUI in Go". giDoui.org. Retrieved 2019-11-14.
  9. ^ Korrovits, Tarvo (2019-12-19). "actsl/kiss_sdl: Simple generic GUI widget toolkit for SDL2".
  10. ^ Mettke, Micha (2019-12-22). "vurtun/nuklear: A single-header ANSI C gui library".