← All repositories
71,441 stars11,556 forksC++mit0 views

Imgui

Features

  • Engine BackendsThe library connects interface functionality to custom engines by mapping input events and uploading textures through platform-specific backends.
  • Backend-Agnostic Rendering PipelinesDecouples UI logic from graphics APIs by producing raw vertex buffers and draw commands for external host renderers.
  • Vertex Buffer GeneratorsThe library provides a framework for generating optimized vertex buffers to display interactive graphical elements within three-dimensional rendering pipelines.
  • Text Editors[](#text-editors) **ImGuiColorTextEdit (goossens's)**: Colorizing text editor for Dear ImGui (2024-2026) github/goossens/ImGuiColorTextEdit **ImGuiColorTextEdit**: Colorizing text editor for Dear ImGui (2017-2019) github
  • Window Docking SystemsThe library manages window positions by supporting tab dragging, node splitting, and the undocking of individual windows or hierarchies.
  • Node Editors[](#node-editors) **imgui-node-editor**: node editor using Dear ImGui (2016-2023) github/thedmd/imgui-node-editor **ImNodes**: Node graph implementation for Dear ImGui (2019-2022) github/rokups/ImNodes **imnodes**: A sma
  • Immediate Mode UI LibrariesA graphical interface framework that generates UI elements every frame to simplify state management and integration with custom rendering pipelines.
  • Flexible Windowing SystemsManaging complex, dockable, and multi-viewport interface layouts that allow users to organize and detach tools within a graphical application.
  • Immediate Mode Rendering SystemsGenerates UI geometry every frame by executing procedural code, eliminating the need for persistent state synchronization between data and view.
  • Immediate Mode UI DevelopmentBuilding lightweight, frame-based graphical interfaces that integrate directly into existing rendering loops for real-time applications and tools.
  • Declarative UI CompositionA programming paradigm where developers define interface layouts through code-based function calls that automatically reconcile state changes into visual output.
  • Game Engine ToolingCreating custom editors, debug inspectors, and visual manipulation gizmos that run inside high-performance graphics engines and simulation environments.
  • Graphics BackendsConnecting interactive interface components to diverse rendering backends like Vulkan, Metal, and DirectX across multiple operating systems.
  • ID-Based Widget ScopingAssigns unique identifiers to interface elements based on call stacks or user-provided labels to track interaction state across frames.
  • Immediate Mode Plotting Libraries[](#plotting-graph) **ImPlot**: Advanced 2D Plotting for Dear ImGui (2020-2025) github/epezent/implot **ImPlot3D**: Immediate Mode 3D Plotting for Dear ImGui (2024) github/brenocq/implot3d **imgui-plot** (2019-2023) gith
  • Developer-Focused Debugging InterfacesA specialized UI toolkit designed for building real-time inspectors, memory editors, and diagnostic tools for complex software applications.
  • Dynamic Debugging VisualizationsImplementing real-time memory editors, graph plotters, and state inspectors to monitor and manipulate application data during active development.
  • DPI ScalingThe library adjusts font sizes and layout dimensions based on display resolution to ensure interface components remain legible on all screens.
  • Platform-Specific Input BridgingMaps native operating system events like mouse and keyboard signals into a unified internal format for consistent cross-platform interaction.
  • Framework and Engine Backends[](#frameworkengine-backends) Main repository include examples for DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL2/3, Vulkan, SDL\_Renderer, iOS, WebGPU, using frameworks such as GLFW, SDL2, Win32, GLUT, Androi
  • Docking Layout SystemsThe library configures complex window arrangements by splitting nodes and assigning content to designated docking zones.
  • Docking SystemsThe library creates flexible regions within a window or across the viewport to host nested content and maintain stable layouts.
  • Multi-Viewport Windowing SystemsThe library renders interface windows outside the main application boundary by detaching them into independent operating system windows.
  • Binding Generators[](#binding-generators) ### cimgui [](#cimgui) https://github.com/cimgui/cimgui (2015-2025) Output C API + output metadata (see `generator/output/` folder) which can be used to automatically generate other bindings. **(I
  • Cross-Platform Graphics ToolingA collection of rendering backends and platform adapters that enable consistent interface display across diverse hardware and operating systems.
  • Graphics Pipeline ConfigurationsThe library processes draw data and manages graphics states like alpha blending and projection matrices for consistent visual rendering.
  • System Input HandlingThe library processes operating system events including mouse movements, keyboard presses, and window resizing to ensure interface responsiveness.
  • Custom Shape RenderingThe library renders lines and custom geometric shapes directly onto windows using low-level drawing commands and coordinate-based primitives.
  • UI Test Engines[](#automation--testing) **imgui\_test\_engine**: Dear ImGui Test Engine + Test Suite (2022-2024) github/ocornut/imgui\_test\_engine
  • Viewport-Independent WindowingSupports multi-window layouts by detaching interface elements into separate operating system windows managed by the host application context.
  • Compile-Time Header ConfigurationsUses preprocessor macros to customize core data structures and mathematical types before compilation to match specific engine requirements.
  • Serialization and Reflection Tools[](#inspectors-serialization-reflection) **ImGui::Auto()**: auto serialize into UI using C++17 (2017) github/Csabix/imgui **ImQuick**: render UI elements automagically based only on the variable type. (2021) github/marti
  • Widget Identifier SystemsThe library distinguishes interaction targets within parent containers by applying unique labels or scoping identifiers to ensure correct input response.
  • Language Bindings[](#language-bindings) Note: those bindings may be more or less maintained, more or less close to the spirit of original API. People who create language bindings sometimes haven't used the C++ API themselves. Dear ImGui
  • Hexadecimal Editors[](#hex--memory-editors) **imgui\_memory\_editor**: hexadecimal editor (2017-2024) github/ocornut/imgui\_club **imgui\_hex\_editor**: My version of hexadecimal editor for the Dear ImGui (2024) github/Teselka/imgui\_hex\_
  • Knobs[](#knobs) **imgui-rs-knobs**: A library for designing knobs for imgui-rs \[Rust\] (2021) github/DGriffin91/imgui-rs-knobs **imgui-knobs**: This is a port/adaptation of imgui-rs-knobs (2022-2023) github/altschuler/imgui-