ocornut/imgui
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
How imgui is put together
Dear ImGui is a self-contained immediate-mode GUI library for C++ that outputs optimized vertex buffers and draw command lists which the host application renders via its own 3D pipeline. The core is a handful of platform-agnostic files in the repository root (imgui*.cpp/h) with no required build process; rendering and platform integration are isolated in pluggable 'backends' (DirectX 9-12, OpenGL 2/3, Vulkan, Metal, WebGPU, SDL2/3, GLFW, Win32, etc.) under backends/. Data flow is: application calls ImGui widget functions each frame -> library maintains internal state (context, ID stack, input) -> produces vertex/index buffers and ImDrawCmd lists -> the chosen backend uploads them to the GPU and feeds platform events (mouse/keyboard) back into ImGuiIO. Optional extensions include FreeType font rasterization (misc/freetype), std::string widget overloads (misc/cpp), and debugger visualizers (misc/debuggers).
Languages
Frameworks
Infrastructure
Major components
Core context & frame loop (imgui.cpp/imgui.h)
Implements the ImGui context, per-frame lifecycle (NewFrame/EndFrame/Render), window management, layout, clipping, input handling, and public API.
Widgets (imgui_widgets.cpp)
Implements concrete widgets: buttons, sliders, drag inputs, text inputs, combo boxes, tabs, color pickers, etc., on top of core primitives.
Tables (imgui_tables.cpp)
Implements the table API including column sizing, freezing, sorting, and row/column layout.
Rendering & font atlas (imgui_draw.cpp)
Rasterizes anti-aliased primitives into vertex buffers, builds and manages font atlases, and provides the ImDrawList/ImDrawData output consumed by backends.
Internal API & data structures (imgui_internal.h)
Declares internal structures, helpers, and functions shared between core translation units and advanced users/backends.
Demo window (imgui_demo.cpp)
Self-contained ShowDemoWindow() reference implementation showcasing nearly all features and serving as usage documentation.
Backends (backends/)
Per-GPU-API and per-platform adapters that render ImDrawData (e.g. imgui_impl_vulkan, imgui_impl_dx11) and feed platform input (e.g. imgui_impl_glfw, imgui_impl_win32, imgui_impl_sdl2/3).
Optional extensions (misc/)
FreeType font rasterization backend (misc/freetype), std::string/std::wstring InputText overloads (misc/cpp), debugger visualizers, bundled fonts, and single-file amalgamation helper.
A quiet week focused on two targeted bug fixes: resetting background/foreground draw lists over long sessions and a workaround for tables losing their display order.
5 weeksWeek of 2026-08-17
Week of 2026-08-17latest
A quiet week focused on two targeted bug fixes: resetting background/foreground draw lists over long sessions and a workaround for tables losing their display order.
Week of 2026-08-10
A single small backend fix for WebGPU viewport sizing.
Week of 2026-08-03
A big week of groundwork for the upcoming 1.93 release: text alignment rework, new Apple examples, QNX cleanups, pixel-density plumbing, and removal of several outdated APIs.
Week of 2026-07-27
Initial QNX platform support arrived alongside the 1.92.9b hotfix release, plus pixel-perfect fixes for table borders and a slider/drag click regression.
Week of 2026-07-20
Version 1.92.9 shipped with multi-threading aids for rendering and popup API improvements, plus a fix restoring compatibility for older integrations.
Over the past few weeks, the Dear ImGui project has been steadily preparing for and releasing its 1.92.9 version while laying groundwork for 1.93, with a strong focus on font rendering density, multi-threading support for rendering, and platform backends. Notable work includes brand-new QNX platform support, new Apple example apps, fixes to long-standing table drawing glitches, and cleanup of obsolete APIs. Bug fixes dominated the newest weeks, including a workaround for tables losing their display order and corrections to draw-list resets after very long app sessions.
Week by week
2026-08-17A quiet week focused on two targeted bug fixes: resetting background/foreground draw lists over long sessions and a workaround for tables losing their display order.latest2 changes
Fix
Draw list reset fix
Background and foreground draw lists are now properly reset every frame, even after an app has been running for a very long time.
Fix
Table display order workaround
Fixed a problem where tables could lose their display ordering, using a workaround for an underlying issue.
2026-08-10A single small backend fix for WebGPU viewport sizing.1 change
Fix
WebGPU viewport size fix
The WebGPU backend no longer passes non-whole-number sizes when setting the render viewport, which could cause errors.
2026-08-03A big week of groundwork for the upcoming 1.93 release: text alignment rework, new Apple examples, QNX cleanups, pixel-density plumbing, and removal of several outdated APIs.6 changes
Feature
Text alignment rework
Aligned text functions were reworked so they always respect the width you give them.
Feature
New Apple+OpenGL3 example
Added a fresh sample application showing how to use the library on Apple hardware with OpenGL 3.
Fix
SDL2 framebuffer scale on Metal
The SDL2 backend now correctly detects screen scale/density when rendering through Metal.
Refactor
Pixel density applied to draw lists
Draw lists now inherit the current screen pixel density automatically, simplifying high-DPI rendering.
Chore
Removed legacy DirectX12 init signature
An old way of initializing the DirectX12 backend that was deprecated in version 1.91.6 was removed entirely.
Chore
Removed old curve-tessellation style setting
The outdated CurveTessellationTol style option was replaced by the newer CurveTesselationMaxError setting.
2026-07-27Initial QNX platform support arrived alongside the 1.92.9b hotfix release, plus pixel-perfect fixes for table borders and a slider/drag click regression.6 changes
Feature
QNX platform support
Added first-time support for running the library and its samples on the QNX operating system.
Chore
Version 1.92.9b release
Shipped a small follow-up patch release to the 1.92.9 version.
Fix
Slider/drag Ctrl+click flicker fix
Clicking a field you had previously Ctrl+clicked briefly flashing into text-edit mode for one frame is fixed.
Fix
Angled table border position fix
Diagonal (angled) borders in tables were drawn half a pixel off and are now correctly positioned.
Fix
Horizontal table border fix
The bottom horizontal border of a table sat one pixel too low when vertical borders weren't also shown; this is corrected.
Docs
Backend filtering notes
Comments across backends now clearly state that bilinear filtering will be required from version 1.93 onward.
2026-07-20Version 1.92.9 shipped with multi-threading aids for rendering and popup API improvements, plus a fix restoring compatibility for older integrations.6 changes
Chore
Version 1.92.9 release
The 1.92.9 version of the library was officially released this week.
Fix
Legacy CmdListsCount regression fix
Older code relying on a count of draw command lists got correct values again after it broke in 1.92.9.
Feature
Multi-threading debugging fields
Draw data now includes a frame counter to help track down problems when rendering happens on a separate thread.
Feature
Texture queue user data hook
Added a slot for custom data on queued textures, useful for advanced threaded-rendering setups.
Feature
Popup functions return success
OpenPopup and related functions now report whether they actually opened something.
Docs
FAQ expansion
The FAQ index was reorganized and gained new sections on multi-threading and string handling.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required