[ ocornut ](https://github.com/ocornut) / ** [imgui](https://github.com/ocornut/imgui) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ocornut/imgui/wiki).

  * [ Notifications ](https://github.com/login?return_to=%2Focornut%2Fimgui) You must be signed in to change notification settings
  * [ Fork 11.6k ](https://github.com/login?return_to=%2Focornut%2Fimgui)
  * [ Star  72.2k ](https://github.com/login?return_to=%2Focornut%2Fimgui)

# Home

Jump to bottom

omar edited this page Mar 15, 2026 · [384 revisions](https://github.com/ocornut/imgui/wiki/Home/_history)

Welcome to the Dear ImGui wiki! Feel free to edit and contribute!

New to Dear ImGui? Check out the [Getting Started guide](https://github.com/ocornut/imgui/wiki/Getting-Started).

**2026-03**: You can request small wiki edits at [#9292](https://github.com/ocornut/imgui/issues/9292).
**2024-07: Wiki editing is unfortunately disabled because it is the only way for this wiki to be indexed by search engines. I have submitted a suggestion to GitHub to workaround this problem: [#133123](https://github.com/orgs/community/discussions/133123). Please consider upvoting to help.** GitHub is [preventing search engines from indexing editable wikis](https://github.com/orgs/community/discussions/4992). There are third-party crawlable mirrors (e.g. <https://github-wiki-see.page/m/ocornut/imgui/wiki>) but Google is doing a poor job surfacing the information. DuckDuckGo or Bing may occasionally do a better job, and the GitHub search bar exists. If you have meaningful Wiki edits to make you can checkout the Wiki git repo, make a change and submit it as a PR in main repo. We may need to move the Wiki elsewhere since GitHub is not cooperating by not allowing project owners to even e.g. add wiki editors.)

# Index

  * General
    * General documentation
    * Community
    * Demo, Examples
    * **Language Bindings**
    * **Platform and Rendering Backends**
    * **Third-Party Extensions**
    * **Testing / Automation**
    * Notable branches
  * Features
    * Debug Tools
    * Rendering Textures / Images
    * Fonts / Text
    * Tables
    * Multi-Select
    * Docking
    * Multi-viewports
    * Inputs
  * Miscellaneous
    * Building / Packaging Cruft
    * Third-party Frameworks, Templates, Starter Packs
    * Notable forks
    * Ports, Rewrites, Clones
    * Related/Suggested Libraries
    * Job Board
  * Articles, Videos
    * Articles/Videos About Dear ImGui
    * About the IMGUI paradigm

# General

### General documentation

  * [FAQ (Frequently Asked Questions)](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md) (docs/FAQ.md)
  * [Homepage Readme](https://github.com/ocornut/imgui/blob/master/docs/README.md) (docs/README.md)
  * **[Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started)**
  * **[Funding & Sponsors](https://github.com/ocornut/imgui/wiki/Funding)** << If you use Dear ImGui as part of your business/work, please read.
  * [Glossary](https://github.com/ocornut/imgui/wiki/Glossary)
  * [Software using Dear ImGui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui)
  * [User quotes](https://github.com/ocornut/imgui/wiki/Quotes)
  * [Upcoming changes](https://github.com/ocornut/imgui/wiki/Upcoming-Changes) (~roadmap)
  * [Tips](https://github.com/ocornut/imgui/wiki/Tips) (for people working _with_ dear imgui)
  * [Developer tips](https://github.com/ocornut/imgui/wiki/Developer-Tips) (for people working _on_ dear imgui)
  * [Releases / Changelogs](https://github.com/ocornut/imgui/releases) with annotations and pictures.

### Community

  * [Github Issues](https://github.com/ocornut/imgui/issues): for feature requests, bug reports, feedback, code snippets, etc. Searching there is recommended as many topics have been discussed and referenced already! Also see [Labels](https://github.com/ocornut/imgui/labels) for categorized issues.
  * [How to open an Issue or Pull Request #2261](https://github.com/ocornut/imgui/issues/2261)
  * [Help wanted](https://github.com/ocornut/imgui/wiki/Help-Wanted)
  * [Gallery threads](https://github.com/ocornut/imgui/issues/7503) / [Gallery Label](https://github.com/ocornut/imgui/labels/gallery): Post your screenshots / code here
  * [Community Guest Book](https://github.com/ocornut/imgui/issues/7840)

### Demo, Examples

  * [About Examples apps](https://github.com/ocornut/imgui/blob/master/docs/EXAMPLES.md) (docs/EXAMPLES.md)
  * The [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder contains 23 standalone example applications for varieties of platforms and frameworks.
  * The [imgui_demo.cpp](https://github.com/ocornut/imgui/tree/master/imgui_demo.cpp) file has a `ImGui::ShowDemoWindow()` function which you can call from any imgui-enabled application to showcase variety of features. The demo function is called from all examples/ apps.
  * Third-party: @pthom's [imgui_explorer](https://pthom.github.io/imgui_explorer): an interactive manual for Dear ImGui, ImPlot and ImPlot3d.

### Language Bindings

  * [List of language bindings](https://github.com/ocornut/imgui/wiki/Bindings) (C, C#, D, Go, JavaScript, Lua, Python, Rust and many others...)
  * [List of binding generators](https://github.com/ocornut/imgui/wiki/Bindings#binding-generators) (cimgui, dear_bindings)

### Platform and Rendering Backends

  * [List of engine/framework backends](https://github.com/ocornut/imgui/wiki/Bindings#frameworkengine-backends) (Unity, Unreal and many others...)
  * [About Backends](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md) (docs/BACKENDS.md)
  * The [backends/](https://github.com/ocornut/imgui/tree/master/backends) folder contains 18 reusable backends for varieties of platforms and frameworks.

### Third-Party Extensions

  * [List of useful third-party extensions/widgets](https://github.com/ocornut/imgui/wiki/Useful-Extensions): Text editors, node editors, plotting/graphing, curves/animations/gradients editors, file dialogs, knobs, spinners, toggles, layout, remoting, 3d gizmos, inspectors, and many more!

### Testing / Automation

  * [Dear ImGui Test Engine + Dear ImGui Test Suite](https://github.com/ocornut/imgui_test_engine)

### Notable branches

  * [master](https://github.com/ocornut/imgui/tree/master) branch
  * [docking](https://github.com/ocornut/imgui/tree/docking) branch (fully maintained): include [Docking](https://github.com/ocornut/imgui/wiki/docking) \+ [Multi-Viewports](https://github.com/ocornut/imgui/wiki/multi-viewports) features.

Return to Index

# Features

### Debug Tools

  * See [Debug Tools](https://github.com/ocornut/imgui/wiki/Debug-Tools) wiki page explaining `ShowMetricsWindow()`, `ShowDebugLogWindow()`, `ShowIdStackToolWindow()`, Item Picker..
  * See [Error Handling](https://github.com/ocornut/imgui/wiki/Error-Handling) wiki page about ways to configure error handling and state recovery.

### Rendering Textures / Images

  * Article: [Image Loading and Displaying Examples](https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples) (helpful if you are confused about `ImTextureID`).

### Fonts / Text

  * Read: [Using Fonts](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) (docs/FONTS.md)
  * Search in Issues: [font/text](https://github.com/ocornut/imgui/issues?q=label%3Afont%2Ftext+)
  * Freetype renderer: [imgui_freetype](https://github.com/ocornut/imgui/tree/master/misc/freetype) (misc/freetype/imgui_freetype)

### Tables

  * [#3740](https://github.com/ocornut/imgui/issues/3740) Main Tables Topic
  * Search in Issues: [tables/columns](https://github.com/ocornut/imgui/issues?q=label%3Atables%2Fcolumns+)

### Multi-Select

  * [About Multi-Select](https://github.com/ocornut/imgui/wiki/Multi-Select)

### Docking

  * [About Docking](https://github.com/ocornut/imgui/wiki/Docking)
  * Search in Issues: [docking](https://github.com/ocornut/imgui/issues?q=label%3Adocking+)
  * [#2109](https://github.com/ocornut/imgui/issues/2109) Main Docking topic
  * [List of legacy third-party Docking extensions](https://github.com/ocornut/imgui/wiki/Docking#legacy-third-party-docking-extensions) (prior to official docking: LumixEngine, imguiDock, ImWindow, imgui_wm, etc.)

### Multi-viewports

  * [About Multi-Viewports](https://github.com/ocornut/imgui/wiki/Multi-Viewports)
  * Search in Issues: [multi-viewports](https://github.com/ocornut/imgui/issues?q=label%3Amulti-viewports+)
  * [#1542](https://github.com/ocornut/imgui/issues/1542) Main Multi-viewports topic
  * [#2117](https://github.com/ocornut/imgui/issues/2117) Linux/Mac compatibility of multi-viewports

### Inputs

  * Search in Issues: [inputs](https://github.com/ocornut/imgui/issues?q=label%3Ainputs)
  * 1.87 new IO event queue API [#4921](https://github.com/ocornut/imgui/issues/4921)
  * ~~Input / IO queue for very low framerate applications:[gist](https://gist.github.com/ocornut/8417344f3506790304742b07887adf9f)~~

Return to Index

# Miscellaneous

### Building / Packaging Cruft

  * [https://vcpkg.io/](https://github.com/ocornut/imgui/wiki/vcpkg) has Dear ImGui available.
  * [Meson WrapDB](https://mesonbuild.com/Wrapdb-projects.html) has a Meson Wrap for Dear ImGui.
  * [#1713](https://github.com/ocornut/imgui/pull/1713) CMake project to build Examples (PR) by @podsvirov (need feedback)
  * [#3027](https://github.com/ocornut/imgui/pull/3027) Add CMake configuration (PR) by @Qix- (need feedback)
  * [rokups' cmake](https://gist.github.com/rokups/f771217b2d530d170db5cb1e08e9a8f4) Self-contained single-file cmake build script
  * Premake5 <https://github.com/ocornut/imgui/tree/features/premake5> (feature branch)
  * Conan [github/conan-center-index/conan-imgui](https://github.com/conan-io/conan-center-index/tree/master/recipes/imgui), [conan-center](https://conan.io/center/recipes/imgui)
  * Fips (fips-imgui): fipsified imgui for fips build system [github/fungos/fips-imgui](https://github.com/fungos/fips-imgui)
  * GN (Chromium, ninja) BUILD.gn file: [github/ndsol/VolcanoSamples](https://github.com/ndsol/VolcanoSamples/blob/master/src/BUILD.gn)

### Third-party Frameworks, Templates, Starter Packs

(Please also check our [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder in the repo, they work fine as starter apps!)

C/C++

  * asap: Starter project for portable app with optional GUI (GLFW/ImGui) [github/abdes/asap](https://github.com/abdes/asap) (2018-2024)
  * Gear: A modern C++ sandbox application with ImGui, GLFW, and modular architecture. [github/adamsepp/GEAR](https://github.com/adamsepp/GEAR) (2025-2026)
  * GGWeb: Template for making a GUI app with C++ / Dear ImGui / SDL / OpenGL / Emscripten that can run both natively and in the browser. [github/ggerganov/ggweb](https://github.com/ggerganov/ggweb) (2022)
  * fenestra: an effort to create a cross-platform, free and open source Windowing and UI system based on SDL and ImGui. [github/WerWolv/Fenestra](https://github.com/WerWolv/Fenestra) (2024)
  * Walnut: simple application framework for Vulkan and Dear ImGui apps. [github/TheCherno/Walnut](https://github.com/TheCherno/Walnut) (2022-2023)
  * imgui-app: amalgamation of Dear ImGui and Sokol into two files [github/pplux/imgui-app](https://github.com/pplux/imgui-app) (2021-2022)
  * imgui_application: Tiny library for making c++ imgui-based apps (web & native) [github/inobelar/imgui_application](https://github.com/inobelar/imgui_application) (2023)
  * ImPlatform: aim to simplify the multiplatform development with Dear ImGui[github/soufianekhiat/ImPlatform](https://github.com/soufianekhiat/ImPlatform) (2024)
  * wiimag's framework: C/C++ Application Framework for Windows, MacOS, and Linux. [github/wiimag/framework](https://github.com/wiimag/framework) (2023)
  * Hello ImGui: enables quickly writing multiplatform apps with the simplicity of a "Hello World" app [github/pthom/hello_imgui](https://github.com/pthom/hello_imgui) (2019-2024)
  * imgui_dojo: an easy setup example for imgui [github/LiuZHolmes/imgui_dojo](https://github.com/LiuZHolmes/imgui_dojo) (2019)
  * mahi-gui: Dirt Simple C++ GUI Toolkit using GLFW, glad, and ImGui [github/mahilab/mahi-gui](https://github.com/mahilab/mahi-gui) (2020-2021)
  * sdl-bgfx-imgui-starter: A starter project for graphics applications [github/pr0g/sdl-bgfx-imgui-starter](https://github.com/pr0g/sdl-bgfx-imgui-starter) (2020-2023)
  * Starter dear-imgui GLFW/OpenGL 3 based CMake C++ project: [github/urddru/imgui-glfw](https://github.com/urddru/imgui-glfw)
  * ImDuino (ESP32+TFT+ImSoft+ImGui example): [github/LAK132/ImDuino](https://github.com/LAK132/ImDuino) (2019-2020)
  * ImFrame: Dear ImGui + GLFW C++ / CMake application framework: [github/JamesBoer/ImFrame](https://github.com/JamesBoer/ImFrame) (2021-2023)
  * UntitledImGuiFramework: A desktop software development framework: [github/MadLadSquad/UntitledImGuiFramework](https://github.com/MadLadSquad/UntitledImGuiFramework) (2022-2024)

C/C++, Python:

  * imgui_bundle: bundle including various powerful libraries [...] easily create ImGui applications in C++ and Python, under Windows, macOS, and Linux [github/pthom/imgui_bundle](https://github.com/pthom/imgui_bundle) (2022-2024)

Other:

  * ImTemplate: Template for making a single-windowed (or not) Dear ImGui application in Nim. [github/Patitotective/ImTemplate](https://github.com/Patitotective/ImTemplate) (2022-2024)
  * Bimpy: bundled imgui for python: [github/podgorskiy/bimpy](https://github.com/podgorskiy/bimpy) (2019-2020)
  * giu: Cross platform rapid GUI framework for golang based on Dear ImGui. [github/AllenDang/giu](https://github.com/AllenDang/giu) (2020-2024)
  * Dear PyGui: A Simple Python GUI framework [github/hoffstadt/DearPyGui](https://github.com/hoffstadt/DearPyGui) (2020-2024)
  * ImGui Javascript Sandbox: [web](https://codepen.io/flyovergames/pen/xYPBaj)
  * DarknessFX Zig projects, templates, programs, libs and tools: [github.com/DarknessFX/zig_workbench](https://github.com/DarknessFX/zig_workbench) (2023)

### Notable forks

  * <https://github.com/adobe/imgui>
  * <https://github.com/ubisoftinc/imgui>
  * <https://github.com/mojang/imgui>
  * <https://github.com/thedmd/imgui>
  * <https://github.com/flix01/imgui>
  * <https://github.com/Csabix/imgui>

### Ports, Rewrites, Clones

  * See: [Ports, Rewrites, Clones](https://github.com/ocornut/imgui/wiki/Bindings#ports-rewrites-clones) section.

### Related/Suggested Libraries

  * stb (stb single-file public domain libraries for C/C++) <https://github.com/nothings/stb>
  * str (lightweight C++ string type with an optional local buffer) <https://github.com/ocornut/Str>
  * nuklear (A single-header ANSI C gui library) <https://github.com/Immediate-Mode-UI/Nuklear>
  * egui (egui: an easy-to-use immediate mode GUI in Rust) <https://github.com/emilk/egui>
  * im3d (Immediate mode rendering and 3d gizmos) <https://github.com/john-chapman/im3d>
  * An immediate mode 3D gizmo (translation, rotation, scale for scene editing) <https://github.com/meshula/tinygizmo>
  * small libraries with minimal dependencies <https://github.com/nothings/single_file_libs>

### Job Board

See <https://github.com/ocornut/imgui/issues/5031> for industry job offers relating to use of Dear ImGui.

Return to Index

# Articles, Videos

### Articles/Videos About Dear ImGui

**English**

  * 2016-07: Using imgui with STL types [blog](https://eliasdaler.github.io/using-imgui-with-sfml-pt2/#using-imgui-with-stl) _[note that this article is now outdated: BeginCombo() api makes it natural to enumerate from any containers, InputText() supports resizing callbacks and[imgui_stdlib.h](https://github.com/ocornut/imgui/tree/master/misc/cpp) provides wrapper for std::string]_
  * 2016-10: CppCon 2016: Nicolas Guillemot “Dear imgui,": [video](https://www.youtube.com/watch?v=LSRJ1jZq90k).
  * 2017-03: Why I think Immediate Mode GUI is way to go for GameDev tools: [post](https://gist.github.com/bkaradzic/853fd21a15542e0ec96f7268150f1b62).
  * 2018-04: TheChernoProject: [ImGui in OpenGL](https://www.youtube.com/watch?v=nVaQuNXueFw) / [ImGui Game Engine series](https://www.youtube.com/watch?v=st4lgNI6_F4) / [ImGui Events](https://www.youtube.com/watch?v=yBP1gSbQPPM) / [Docking & Viewport](https://www.youtube.com/watch?v=lZuje-3iyVE)
  * 2018-08: Mana Engine: Thread safety of APIs [medium/tloch34](https://medium.com/@tloch14/mana-engine-thread-safety-of-apis-7e73d482a5c6)
  * 2018-10: C++ DirectX 11 Engine Tutorial 35/36: Set up ImGui: [Part 35](https://www.youtube.com/watch?v=Btx_tujnyB4), [Part 36](https://www.youtube.com/watch?v=o5sJClp0HDY)
  * 2019-01: Could ImGUI be the future of GUIs? [games.greggman.com](https://games.greggman.com/game/imgui-future/)
  * 2019-03: Rust: Making a basic game ui with imgui and ggez [blog](http://iolivia.me/posts/imgui-ggez)
  * 2019-05: Frictionless Debug UI In C++: [pdf](http://evanachahn.com/Frictionless%20Debug%20UI%20In%20C++.pdf)
  * 2019-06: An introduction to the Dear ImGui library: [blog](https://blog.conan.io/2019/06/26/An-introduction-to-the-Dear-ImGui-library.html).
  * 2019-08: Integrating Dear ImGui in a custom Vulkan renderer [blog](https://frguthmann.github.io/posts/vulkan_imgui/)
  * 2020-02: Runtime Compiled C++ Dear ImGui and DX11 Tutorial: [blog](https://www.enkisoftware.com/devlogpost-20200202-1-Runtime-Compiled-C++-Dear-ImGui-and-DirectX11-Tutorial).
  * 2020-03: C++ Weekly - Ep 210: Getting Started With SFML & Dear ImGui [youtube](https://www.youtube.com/watch?v=av0SYeUxVMU)
  * 2020-03: C++ desktop application with Dear Imgui: [blog](https://ruurdsdevlog.wordpress.com/2020/03/07/c-desktop-application-with-dear-imgui)
  * 2020-06: A Preface to the Dear ImGUI C++ Library: [blog](https://medium.com/@jfrog.community/an-introduction-to-the-dear-imgui-c-library-918cdca75930)
  * 2020-09: A Vulkan + Dear ImGui Sandbox: [blog](https://tstullich.github.io/posts/vulkan-sandbox/)
  * 2021-01: Gamefromscratch: Dear ImGui C++ GUI Framework For AAA Games and Game Engines [youtube](https://www.youtube.com/watch?v=Du--cH01ZWI)
  * 2021-02: Introduction to the Dear ImGui C++ Library with Conan: [video](https://www.youtube.com/watch?v=O2E-W9P-jKc), [blog](https://blog.conan.io/2019/06/26/An-introduction-to-the-Dear-ImGui-library.html)
  * 2021-04: Thinking in Immediate: [video](https://www.youtube.com/watch?v=a1VLfd3RpCk)
  * 2021-05: ImGui-SFML: Using CMake and managing dependencies: [blog](https://eliasdaler.github.io/using-cmake/)
  * 2021-05: ImGui + GLFW Tutorial: [video](https://www.youtube.com/watch?v=VRwhNKoxUtk)
  * 2022-02: BEST WAY to make Desktop Applications in C++: [video](https://www.youtube.com/watch?v=vWXrFetSH8w)
  * 2022-04: Make your own GUI apps in C++ (with Dear ImGui and Vulkan) [video](https://www.youtube.com/watch?v=5zS-DZhCA2g)
  * 2022-05: Dear ImGui in Unreal Engine 5 with C++ [video](https://www.youtube.com/watch?v=qyO38jX5RU8) \+ [followup](https://www.youtube.com/watch?v=oS1vLHA3_jw)
  * 2023-02: Dear ImGui for Unity - easiest GUI menus and bars [video](https://www.youtube.com/watch?v=i9yjuJC11zU)
  * 2023-07: Custom title bars (Make Beautiful Desktop Applications in C++) [video](https://www.youtube.com/watch?v=-NJDxf4XwlQ)
  * 2023-08: Dear IMGUI in C# .NET! Tutorial [video](https://www.youtube.com/watch?v=vuiMjD_Z7aY)
  * 2023-09: Leveraging Dear ImGui in Unreal: [blog](https://sharundaar.github.io/leveraging-dearimgui-in-unreal.html)
  * 2023-09: Visual node graph with ImGui: [blog](https://gboisse.github.io/posts/node-graph/)
  * 2024-09: Debug BETTER with ImGui in Godot 4: [video](https://www.youtube.com/watch?v=Zcgz3FNdj5w)
  * 2024-11: Dear ImGui: Build a c++ debugger and editor | Jack Chen | NZGDC 2024: [video](https://www.youtube.com/watch?v=c33btiw-vhg)
  * 2025-03: Odin SDL3 GPU Tutorial: Dear ImGui, Tuning stuff with Debug UI: [video](https://www.youtube.com/watch?v=HHYYE-ihLLg)
  * 2025-04: C++: Rendering An OpenGL Framebuffer Into A Dear ImGui Window: [blog](https://www.codingwiththomas.com/blog/rendering-an-opengl-framebuffer-into-a-dear-imgui-window)
  * 2025-11: Wookash podcast with Omar Cornut: [video](https://www.youtube.com/watch?v=2KPUMvyUMzM&t=2775s)
  * 2026-01: Building Lightweight Profiling & Visualization Tools in Unreal Using ImGui [medium/@GroundZer0](https://medium.com/@GroundZer0/building-lightweight-profiling-visualization-tools-in-unreal-using-imgui-7329c4bd32e6)

**Arabic**

  * 2026-03: Dear ImGui مرجع [almhajer.github.io/GraphicsProgrammingAtlas](https://almhajer.github.io/GraphicsProgrammingAtlas/#imgui-index)

**Korean**

  * 2018-01: GLFW 사용 방법 정리 (Windows 10, VS2017) [3dshovel.blogspot.com](https://3dshovel.blogspot.com/2018/01/glfw-windows-10-visual-studio-2017.html)

**Japanese**

  * 2016-12: OpenGLやDirectXなGUIにimguiが最強すぎる [qiita.com/Ushio](https://qiita.com/Ushio/items/446d78c881334919e156)
  * 2016-16: 最強すぎるGUIことImGuiの見た目もイイ感じにする [qiita.com/izumin5210](https://qiita.com/izumin5210/items/26eaed69eea2c4318fcd)
  * 2018-03: ImGuiでデバッグツール [hikita12312.hatenablog.com](http://hikita12312.hatenablog.com/entry/2018/03/17/100535)
  * 2018-02: OpenSiv3DでImGuiを使う [qiita.com/RareAmayuki](https://qiita.com/RareAmayuki/items/ca802071b452b42ad630)
  * 2018-12: ダッシュボードオーバーレイ（OpenVR overlay）を作りimguiとDirectXで描いてみる [qiita.com/ondorela](https://qiita.com/ondorela/items/bf4bebf747f90ebf52d8)
  * 2019-07: imgui で GUI を作るときのメモ [qiita.com/syoyo](https://qiita.com/syoyo/items/85571b0697f1a9cbea71)
  * 2019-12: Dear ImGuiの使い方まとめ [qiita.com/mizuma](https://qiita.com/mizuma/items/73218dab2f6b022b0227)
  * 2020-01: imguiのwindowの中で3d cubeの描画をしてやった [qiita.com/ssaattwworg](https://qiita.com/ssaattwworg/items/32ee9a6fdb0476833c02)
  * 2020-02: imgui 使ってみた [note.com/onswar](https://note.com/onswar/n/nf5bbe6e1e5b3)
  * 2020-03: Dear ImGui で作成したウィンドウの中に OpenGL で描画するサンプルプログラム [github/tokoik](https://github.com/tokoik/DrawOpenGLinImGuiWindow)
  * 2020-12: OpenSiv3Dで自作したImGuiライクなGUIライブラリの紹介 [qiita.com/sthairno](https://qiita.com/sthairno/items/edfb969a4d8f51f57a2a)
  * 2020-12:【UE4】GUIフレームワーク「Dear ImGui」を使ってデバッグ・ツール用UIを作ってみよう！[pafuhana1213.hatenablog.com](https://pafuhana1213.hatenablog.com/entry/UnrealImGui-HowTo-Basic)
  * 2020-12:【UE4】【C++】ImGuiを使ってみてハマった所、気付いた所 [toofu0.hatenablog.com](https://toofu0.hatenablog.com/entry/2020/12/18/014706)
  * 2021-03: UE4：ImGui導入手順 [toncrimentan-w.hatenablog.com](https://toncrimentan-w.hatenablog.com/entry/2021/03/08/154022)
  * 2022-07: ImGui で日本語と記号♥と絵文字😺の表示 [zenn.dev/tenka](https://zenn.dev/tenka/articles/display_japanese_symbols_and_emoji_with_imgui)
  * 2022-11:【Unity】Dear ImGuiの導入方法 [limegame.hatenablog](https://limegame.hatenablog.com/entry/2022/11/11/131111) +【Unity】Dear ImGuiのメニューバー実装方法 [limegame.hatenablog](https://limegame.hatenablog.com/entry/2022/11/21/153547)
  * 2023-01: Java 3D LWJGL 改造 〜Chapter10：Imgui を使用した GUI 描画を改造〜 [zenryokuservice.com](https://zenryokuservice.com/wp/2023/01/03/java-3d-lwjgl-%e6%94%b9%e9%80%a0-%e3%80%9cchapter10%ef%bc%9aimgui-%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%9f-gui-%e6%8f%8f%e7%94%bb%e3%82%92%e6%94%b9%e9%80%a0%e3%80%9c/)
  * 2023-03: DirectX12でImGuiを使用する [zenn.dev/norainu](https://zenn.dev/norainu/articles/10856bfe120aa2)
  * 2023-06:【Unity】Dear ImGuiの日本語フォント導入方法 [limegame.hatenablog.com](https://limegame.hatenablog.com/entry/2023/06/12/141924)
  * 2024-12: 神話のプログラム言語 OdinでDear ImGuiを動かす [zenn.dev/ohkan](https://zenn.dev/ohkan/articles/c706be73c21b60)

**Chinese (Trad)**

  * 2020-10: Day 17 ImGui 元件 [ithelp.ithome.com.tw](https://ithelp.ithome.com.tw/articles/10246595)
  * 2022-11:【ImGui 入门到精通 课程介绍】 [video](https://www.bilibili.com/video/BV13e4y1m73N/?share_source=copy_web&vd_source=f1c007c0c824bfae9d1cc94d21fada0d)

**French**

  * 2020-11: Dear ImGui : une bibliothèque d'interface utilisateur graphique "bloat-free" pour C++ [cpp.developpez.com](https://cpp.developpez.com/actu/310179)

**German**

  * 2023-04: Interaktive GUI mit C++ und ImGui: Praktische Beispiele [udemy.com/course](https://www.udemy.com/course/interaktive-gui-mit-c-und-imgui-praktische-beispiele/)

**Portuguese**

  * 2022-05: Como Criar Interfaces Gráficas com Dear ImGui e SFML [video](https://www.youtube.com/watch?v=XmiEkoqodcg)

**Polish**

  * 2018-01: Szkolenie z biblioteki dear imgui [Video Part 1](https://www.youtube.com/watch?v=TOop9EGngKY) [2](https://www.youtube.com/watch?v=fh6uOdherYw) [3](https://www.youtube.com/watch?v=bF2eOvsX7kY) [4](https://www.youtube.com/watch?v=rcCReEX6h-M) [5](https://www.youtube.com/watch?v=N2Jan6IizbA) [6](https://www.youtube.com/watch?v=70A0YH9h3Ek) [7](https://www.youtube.com/watch?v=0JRaThBx9Ww) [8](https://www.youtube.com/watch?v=O7PVZ6OKDtI) [9](https://www.youtube.com/watch?v=uIp7tLqFzKo), [Slide](https://docs.google.com/presentation/d/1F3jkWkRGCNrCAKi34KXvrkZ9luhS_7RUwHwdYDTFEiY/preview#slide=id.p)
  * 2021-02: Dear ImGui: pragmatyczne podejście do programowania interfejsów użytkownika [programista mag](https://programistamag-pl.translate.goog/programista-1-2021-95/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=pl&_x_tr_pto=wapp)

### About the IMGUI paradigm

Dear ImGui is one possible implementation of an idea generally described as the IMGUI (Immediate Mode GUI) paradigm. The Immediate Mode GUI paradigm may at first appear unusual to some users. This is mainly because "Retained Mode" GUIs have been so widespread and predominant. The following links can give you a better understanding about how Immediate Mode GUIs works.

  * **[FAQ entry: What is the difference between Dear ImGui and traditional UI toolkits?](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-what-is-the-difference-between-dear-imgui-and-traditional-ui-toolkits)**.
  * **[Our Wiki page About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki/About-the-IMGUI-paradigm)**.
  * [Johannes 'johno' Norneby's article](http://www.johno.se/book/imgui.html), 2007.
  * [A presentation by Rickard Gustafsson and Johannes Algelind](http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/IMGUI.pdf), 2011.
  * [Jari Komppa's tutorial on building an IMGUI library](http://iki.fi/sol/imgui/), @jarikomppa, 2006.
  * [Casey Muratori's original video that popularized the concept](https://mollyrocket.com/861), 2005.
    * [First notable post by Casey on 2005-07-05](https://web.archive.org/web/20070824213736/http://www.mollyrocket.com/forums/viewtopic.php?t=134&start=0&sid=cb913629aa8310947c0476848a8824dd).
    * [2007 Mirror of Molly Rocket's IMGUI forums](https://web.archive.org/web/20070824203105/http://www.mollyrocket.com/forums/viewforum.php?f=10&sid=9680eeedbe87034741d936cbfe319f57) (with posts).
    * [2013 Mirror of Molly Rocket's IMGUI forums](https://web.archive.org/web/20131221233224/http://mollyrocket.com/forums/viewforum.php?f=10&sid=b7ce0b0de4493f63edd88d13c99501a9) (index only, missing posts).
  * [Sean Barrett's article in Game Developer Magazine](https://archive.org/details/GDM_September_2005) (Page 34), September 2005.
  * [Sean Barrett's IMGUI page and toolkit](http://silverspaceship.com/inner/imgui), @nothings, 2005.
  * [Nicolas Guillemot's CppCon'16 flash-talk about Dear ImGui](https://www.youtube.com/watch?v=LSRJ1jZq90k), 2016.
  * [Thierry Excoffier's ZMV (Zero Memory Widget)](http://perso.univ-lyon1.fr/thierry.excoffier/ZMW/), 2004.

Another notable uses of IMGUI paradigm include [Unity's own IMGUI widget library](https://docs.unity3d.com/Manual/GUIScriptingGuide.html), often informally referred to as `OnGUI()`, which powers the Unity editor and its extensions. This library is unrelated from Dear ImGui. The IMGUI library used by Unity has in the past received mixed feedback from its users, presumably because it may have been perceived as a potential candidate for game-facing UI solutions, which it doesn't excel at. However Unity has since provided separate libraries to tackle that case, and their IMGUI library is still very much in use for the Unity Editor and has been its UI backbone for the past 15+ years.

Return to Index

### Clone this wiki locally


[ ocornut ](https://github.com/ocornut) / ** [imgui](https://github.com/ocornut/imgui) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ocornut/imgui/wiki/Glossary).

  * [ Notifications ](https://github.com/login?return_to=%2Focornut%2Fimgui) You must be signed in to change notification settings
  * [ Fork 11.6k ](https://github.com/login?return_to=%2Focornut%2Fimgui)
  * [ Star  72.2k ](https://github.com/login?return_to=%2Focornut%2Fimgui)

# Glossary

Jump to bottom

omar edited this page Apr 19, 2024 · [21 revisions](https://github.com/ocornut/imgui/wiki/Glossary/_history)

(work in progress)

## Index

  * General Terms
  * Widget Status Terms
  * Docking Terms
  * Multi-Viewports Terms

## General Terms

**Backends/Bindings**: a piece of code that connects your OS/platform/windowing system, graphics API or programming language to Dear ImGui. In the `examples/` folder we provide a bunch of `imgui_impl_xxxx` files which are backends for a variety of platforms and graphics API. See [BACKENDS.md](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md). Many other [third-party backends/bindings](https://github.com/ocornut/imgui/wiki/Bindings) exist.

**Demo**: the demo code in `imgui_demo.cpp`, whose main entry point is the `ImGui::ShowDemoWindow()` function. See [interaction web version of the demo](https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html).

**Docking**: refers to the feature (currently available in the `docking` branch) where multiple windows can be combined with each other, used to create tab bars, or laid out next to each other. See [Docking](https://github.com/ocornut/imgui/wiki/Docking) page.

**Draw command, ImDrawCmd**: refers to one item within an `ImDrawList`. One draw command generally maps to one draw call in the underlying graphics API. Some draw commands hold callbacks or special functions that don't necessarily map to an actual draw call in the graphics API.

**Draw list, ImDrawList**: refers to the low-level rendering API which you can use to submit shapes (such as rectangles, lines, circles or text elements). The ImGui API uses the ImDrawList API to draw elements. You can easily access the drawlist of the current ImGui window using `ImGui::GetWindowDrawList()` or access special drawlists such as `ImGui::GetBackgroundDrawList()` (drawn before all ImGui windows) or `ImGui::GetForegroundDrawList()` (drawn after all ImGui windows). A draw list is generally comprised of multiple draw commands.

**Examples**: the example applications in the sub-folders of `examples/`. An example application generally combines one or two backends + dear imgui code + a main.cpp file to form a running application. Also see [EXAMPLES.md](https://github.com/ocornut/imgui/blob/master/docs/EXAMPLES.md).

**Font atlas**: a font atlas manage multiple fonts, which for performance reasons are generally rasterized and packed together into a single graphics texture. The font atlas also contains other graphics data that is used by ImGui and ImDrawList.

**Item**: (same as Widget): a single ImGui element (e.g. a `ImGui::Button()` or `ImGui::Text()` call).

**Navigation**: refer to the subsystem in charge of allowing full control of the UI using Gamepad or Keyboard inputs. Initially Dear ImGui mostly used mouse inputs, and the "navigation" feature allows directional navigation within a set of widgets, handling of tabbing, PageUp/PageDown etc.

**Metrics**: refers to the confusingly named `Dear ImGui Metrics/Debugger` window, whose main entry point is the `ImGui::ShowMetricsWindow()` function. The Metrics window exposes lots of internal information about the state of your Dear ImGui context. Using it can help you debug and understand many problems you may have with Dear ImGui. It may also help you better understand how Dear ImGui works. See [Debug Tools](https://github.com/ocornut/imgui/wiki/Debug-Tools).

**Multi-Viewports**: refers to the feature (currently available in the `docking` branch) where Dear ImGui windows can easily be moved outside the boundaries of your main application window. The multi-viewports feature provides an interface to interact with bindings in order to create its own application windows to host the floating Dear ImGui windows. See [Multi-Viewports](https://github.com/ocornut/imgui/wiki/Multi-Viewports).

**Root Window**: a top-level window created with `Begin()`. Child windows created with `BeginChild()` tend to share the same Root Window.

**Widget**: (same as Item): a single ImGui element (e.g. a `ImGui::Button()` or `ImGui::Text()` call).

## Widget Status Terms

**Hovered**: Mouse is hovering the window hosting the widget + mouse position is the widget's bounding box. Some windows (popups/modals) frequently disable hovering on windows behind them. When keyboard or gamepad are being used, many widgets have IsItemHovered() return true when Focused. Only one widget can be Hovered at a given time.

**Active**: Widget is being clicked on, edited, activated, dragged. Only one widget can be Active at a given time (generally set for a short amount of time while manipulating a widget).

**Focused**: Widget is the last that been clicked on, or has been navigated to using keyboard or gamepad. Only one widget can be focused at a given time.

**Visible**: Widget is within view: parent window is not collapsed, not tabbed out, and widget is within the visible scrolling region.

**Edited**: Widget just changed the underlying value (generally set for 1 frame).

**Activated**: Widget was just made active (action started) (generally set for 1 frame).

**Deactivated**: Widget was just made inactive (action stopped) (generally set for 1 frame).

**DeactivatedAfterEdit**: Widget was just made inactive and was in Edited state at least once during its Active state. (generally set for 1 frame).

Refer to `Demo->Widgets->Querying Item Status (Edited,Active,Hovered etc.)` for an interactive version of this.

## Docking Terms

([Read about Docking](https://github.com/ocornut/imgui/wiki/Docking))

**Central Node**: a specific node inside in _Dockspace_ which: stay visible when empty, use leftover space instead of claiming space, can be made transparent (with the "PassthruCentralNode" flag). This is the node often perceived as an "empty node". It only gets initially created when a node is created with the "DockSpace" flag. CURRENTLY, CREATING A DOCKSPACE ALWAYS CREATES A CENTRAL NODE, WHICH HAS BEEN PROBLEMATIC FOR USERS WHO DON'T HAVE AN OBVIOUS "central" GAME/TOOL VIEWPORT.

**Docking** (noun): refers to the Docking subsystem as a whole.

**Docking** (verb): refers to the action of combining one Window or Dock Node into another Window or Dock Node. A docking operation can be a "Split" (split the target window/node into two sections) or an "Merge" (add into the existing target window/node).

**Docking Decorations**: Tab Bar and Close Buttons (when managed by a dock node), Resizing Separators.

**Dock Node**: carries a Tab Bar + zero or more Windows _or_ child dock nodes. A Dock Node can be either a Floating Dock Node or a Dockspace.

**Dock Node Hierarchy**: a dock node and all its child dock nodes.

**Dockspace**: a dock node whose Host Window has been created by the user. This implies that the position and size of the dock node is not controlled by the Docking system. It also implies that the lifetime of the dock node is not controlled by the Docking system.

**Floating Dock Node**: a dock node whose Host Window is automatically created and managed by the Docking system. They are generally freely moveable.

**Root Dock Node**: a dock node that has no parent dock node.

**Leaf Dock Node**: a dock node that that no child dock nodes.

**Host Window**: the Window used to display _Docking Decorations_. In a Dock Node Hierarchy sitting over a Dockspace, the Host Window is always the window where the Dockspace was submitted. In a Dock Node Hierarchy sitting over a Floating Window, the Host Window is created by the Docking system.

## Multi-Viewports Terms

([Read about Multi-Viewports](https://github.com/ocornut/imgui/wiki/Multi-Viewports))

Note: when talking about issues related to the multi-viewports feature, always try to remove ambiguity by specifying if an item is controlled by Dear ImGui or the host system - e.g. "_Dear ImGui Window_ " vs "_Platform Window_ ".

**Desktop**: the area managed by the Operating System or Window Manager that covers all _Platform Monitors_.

**Platform**: refers to the low-level system used to interface with native windows: it could be an Operating System library (Win32) or a cross-platform library (such as SDL, GLFW, Allegro).

**Platform Backend**: refers to the piece of glue code used to have Dear ImGui interact with a given platform (e.g. the `imgui_impl_glfw.cpp` file). This code typically creates and destroy _Platform Windows_ associated with each _Viewport_ , and sets up the _Platform Decorations_ based on the _Viewport_ flags.

**Platform Decoration**: refers to the frame and title bar managed and displayed by the Operating System or Window Manager.

**Platform Monitor**: refers to the representation of a monitor. On a modern OS, each monitor is associated with a non-overlapping set of coordinates (position, size), a work area (main area minus OS task bar) and a DPI scaling factor. Dear ImGui takes advantage of _Platform Monitor_ knowledge for certain tasks (for example, tooltip windows get clamped to fit within a single _Platform Monitor_ and not straddle multiple monitors, new popups try not to overlap the OS task-bar).

**Platform Window**: a window managed by the Operating System. This is typically associated with a framebuffer, a swap chain and the machinery to perform 3D rendering via some graphics API.

**ImGui Decoration**: refers to the frame, title bar, collapse and close buttons managed and displayed by _ImGui Windows_.

**ImGui Window**: a window managed by Dear ImGui. For the purposes of multi-viewports, we often use "ImGui Window" to refer to a top-level _ImGui Window_ only, not child or docked windows.

**Host Viewport**: A _Host Viewport_ can contains multiple _ImGui Windows_. Currently the _Main Viewport_ is always a _Host Viewport_. In the future we would like to allow application to create zero, one or more _Host Viewports_. When a _Host Viewport_ is moved, all the _ImGui Windows_ it contains get moved along with it. By default, any _ImGui Window_ overlapping a _Host Viewport_ will be merged into it. Setting `io.ConfigViewportsNoAutoMerge` disables that behavior, causing every _ImGui Window_ to be hosted by their own unique _Single-Window Viewport_.

**Single-Window Viewport, Owned Viewport**: a _Viewport_ owned by a single _ImGui Window_. In the typical setup, dragging a _ImGui Window_ outside the boundaries of a _Host Viewport_ will create a _Single-Window Viewport_ for the purpose of allowing the _ImGui Window_ to be displayed anywhere on the _Desktop_.

**Main Viewport**: Due to common usage and backward compatibility reasons, the system currently enforces the creation of one _Main Viewport_ which is typically the main application window of the user application. The _Main Viewport_ is also a _Host Viewport_. In most traditional applications, the _Main Viewport_ has _Platform Decorations_ enabled when not maximized, and has _Platform Decorations_ disabled when fullscreen. In the future we would like to completely remove the concept of a "Main Viewport" and instead allow the application to freely create zero, one or more _Host Viewports_. Most games applications will create one of them, whereas most desktop applications are expected to create none. Under this scheme, an application creating no _Host Viewport_ would have every _ImGui Window_ using an individual _Platform Window_ with _Platform Decorations_ disabled. It would become the application's responsibility to shutdown when all the windows are closed.

**Viewport**: The Dear ImGui representation of a _Platform Window_. When a _Viewport_ is active, the _Platform Backend_ creates a _Platform Window_ for it. Whether the _Platform Window_ has _Platform Decorations_ enabled currently depends on `io.ConfigViewportsNoDecoration` flag which gets turned into a `ImGuiViewportFlags_NoDecoration` for the _Platform Backend_ to honor.

### Clone this wiki locally