Dear ImGui v1.92.9 π
β Reading the changelog is a good way to keep up to date with what Dear ImGui has to offer, and will give you ideas of some features that you've been ignoring until now!
π£ If you are browsing multiple releases: click version number above to display full release note contents, otherwise it is badly clipped by GitHub!
Links: Homepage - Release notes - FAQ - Issues, Q&A. Also see our Wiki with sections such as..
- Getting Started (~25 lines in an existing app)
- Useful Extensions/Widgets
- Software using Dear ImGui
- Language Bindings & Engine Backends
- and more! π
Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.
β€οΈ Thanks to past years sponsors β€οΈ
- Asobo Studio !
- Artifex Mundi !
- BeamNG !
- G3Dvu !
- ID Software !
- Lucid Games !
- OTOY !
- Mobigame !
- Remedy Entertainment !
- RocketWerkz !
- Passtech Games !
- Planestate Software !
- River End Games
- Riot Games !!
- SCS Software !
- Scorewarrior !
- Sofistik !
- Tanius Technology !
- Thatgamecompany !
- Tuxedo Labs !
- Supercell !
- Valve !
- Vector Unit !
As well as various paid/corporate licenses to imgui_test_engine supporting the project.t
News about Third-Party Projects
-
imgui_explorer: @pthom's fabulous imgui_manual has been improved and rebranded as imgui_explorer. It also now includes ImPlot and ImPlot3d: https://pthom.github.io/imgui_explorer. He also improved Dear ImGui Bundle Explorer which packs in more extensions.
-
ImGuiColorTextEdit: @goossens has rewritten the fancy text editor initially created by @BalazsJako (which was unmaintained and had many small forks). New version: https://github.com/goossens/ImGuiColorTextEdit
-
VisualNodeSystem New node editor by @Azzinoth
https://github.com/Azzinoth/VisualNodeSystem and see https://github.com/ocornut/imgui/wiki/Useful-Extensions#node-editors -
imgui_threaded_rendering has been updated to support 1.92+ texture queue.
See https://github.com/ocornut/imgui_club and (#8597)[https://github.com//issues/8597]. -
ImGui.NET which has been a bit dormant - because some companies prevent their employees from working on existing OSS - should be updated soon, courtesy of @zaafar. See https://github.com/ImGuiNET/ImGui.NET / https://github.com/ImGuiNET/ImGui.NET-nativebuild
-
implot and implot3d are still kicking, thanks @brenocq for stepping up!
See https://github.com/epezent/implot and https://github.com/brenocq/implot3d -
Unreal Engine users? See "Converging toward a principal Unreal Engine backend/binding for Dear ImGui?". The thread backfired into yet another backend being created: TBImGui (ImGuiToolbox) by @Lewisscrivens. Unrelated: xkcd: Standards.
Check the Useful Extensions/Widgets page for many more.
Changes in v1.92.9 (since v1.92.8)
π 1.92.8 contained a signature change for the trailing optional parameters of ImDrawList::AddRect(), AddPolyline(), PathStroke(). C++ users should be notified at compile-time, but languages without type-checking may only be notified at runtime. Read v1.92.8 if using non a C++ language. Consider enabling IMGUI_DISABLE_OBSOLETE_FUNCTIONS from time to time to get rid of obsolete calls.
π Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures introduced in v1.92.0 ? You can read the recently improved docs/BACKENDS.md.
Breaking Changes
- DragXXX, SliderXXX, InputScalar: with
ImGuiItemFlags_LiveEditOnInputScalarnow defaulting to being disabled: inputting a value with the keyboard doesn't write intermediate values to the backing variable. (#9476)- Before:
DragFloat()with user typing "123" --> write back 1, then 12, then 123. - After:
DragFloat()with user typing "123" --> write back 123 when validated/unfocused. - You can enable the flag back for a given scope if needed by specific widget/behavior. Read below for details.
- Before:
- TreeNode: commented out legacy name
ImGuiTreeNodeFlags_SpanTextWidthwhich was obsoleted in 1.90.7 (May 2024). UseImGuiTreeNodeFlags_SpanLabelWidth. - ColorEdit: obsoleted
SetColorEditOptions()function added in 1.51 (June 2017) in favor of directly poking toio.ConfigColorEditFlags. More consistent and easier to discover. - Drag and Drop: commented out legacy name
ImGuiDragDropFlags_SourceAutoExpirePayloadwhich obsoleted in 1.90.9 (July 2024).- Use
ImGuiDragDropFlags_PayloadAutoExpire.
- Use
- ImDrawData: marked
CmdListsCountas obsolete (technically was obsoleted in 1.89.8).- Before:
draw_data->CmdListsCount, After:draw_data->CmdLists.Size.
- Before:
Other Changes
LiveEdit on/off:
- Added
ImGuiItemFlags_LiveEditOnInputTextandImGuiItemFlags_LiveEditOnInputScalarflags to configure the timing of applying edits of backing variables when typing values using a keyboard. (#9476, #701, #3936, #3946, #5904, #6284, #8149, #8065, #8665, #9117, #9299, #700, #1351, #1875, #2060, #2215, #2380, #2550, #3083, #3338, #3556, #4373, #4714, #4885, #5184, #5777, #6707, #6766, #8004, #8303, #8915, #9308)ImGuiItemFlags_LiveEditOnInputTextis enabled by default (same as before): The expectation is that for strings/text, enabling LiveEdit is a better default.ImGuiItemFlags_LiveEditOnInputScalaris disabled by default (new behavior): The expectation is that for numeric/scalars values, disabling LiveEdit is a better default.- Until now:
- Edits where always applied immediately to backing variable, which is equivalent to the
ImGuiItemFlags_LiveEditXXXflags being enabled. - Typing '123' in an integer field would output successively 1, 12 then 123.
- Most uses of
IsItemDeactivatedAfterEdit()orImGuiInputTextFlags_EnterReturnsTruewere actually workarounds for this issue. Advanced applications would typically useIsItemDeactivatedAfterEdit()to distinguish transactions. Workarounds often required a backing store for scalar values, and there were also a few niggles related toIsItemDeactivatedAfterEdit()when using+/-buttons of anInputInt()widgets. - Many of those situations can now be naturally simplified when disabling
ImGuiItemFlags_LiveEditOnInputScalaris disabled.
- Edits where always applied immediately to backing variable, which is equivalent to the
- The new flags allows disabling this behavior selectively for strings fields such as
InputText()vs scalar fields:SliderInt(),InputFloat(), etc.- When LiveEdit is disabled, edits are applied when pressing enter, tabbing out, clearing a field or deactivating due to a focus loss.
- The flag may be altered programmatically, e.g. for the entire frame scope:
NewFrame();
PushItemFlag(ImGuiItemFlags_LiveEditOnInputScalar, true); // Enable for scalars for the whole frame
[...]
PopItemFlag();
EndFrame(); // ..or for a specific widget:
PushItemFlag(ImGuiItemFlags_LiveEditOnInput, true); // Enable for one widget
SliderInt(...);
PopItemFlag();- We intentionally are not adding
io.ConfigLiveEditXXXfields to dictate the default value of eachImGuiItemFlags_LiveEditXXX, because this is not expected to be a user preference but a programmer/widget preferences. And we strive to make the toolkit consistent.
Windows:
- Clicking on a window's empty-space to move/focus a window checks for lack of mouse button ownership. This gives an additional opportunity for user code to bypass it without using a clickable item. (#9382)
- Clicking on a window's empty-space to move/focus a window checks for lack of queued focus request. (#9382)
- Fixed double-click collapse toggle not owning the mouse button. If a
SetNextWindowPos()with pivot was queued in the same frame, the second click could trigger another item in the same window. (#9439) [@Cleroth]
Popups:
- Added bool return value to
OpenPopup(),OpenPopupOnItemClick()functions to notify when the popup was just opened. (#9429)
InputText:
- Added
style.InputTextCursorSizeto configure cursor/caret thickness. (#7031, #9409) It is automatically scaled bystyle.ScaleAllSizes(). - Reworked
io.ConfigInputTextEnterKeepActivemode so that pressing Ctrl+Enter or Shift+Enter still allows to deactivate. (#9239)
Tables:
- Redesigned/rewrote code to reconcile columns and settings on topology changes. (#9108)
- When a column label is passed to
TableSetupColumn(), the underlying identifier is used to match live columns data and .ini settings data when changing. This makes it possible to add/remove columns from a table without losing neither live data neither .ini settings data.- PS: Note that this is distinct from toggling column visibility or reordering columns, which was always possible. The new matching makes it easier to create tables that are entirely customized by user or code, without losing state.
- Columns without identifiers or with duplicate identifiers are matched sequentially, matching old behavior.
- Column ID are stored in .ini file.
- Code is being tested both for live topology changes and for loading .ini data with mismatched topology.
- Context Menu: added a "Reset" sub-menu with a "Reset Visibility" option (which is greyed out when using default settings).
- Headers: fixed label being clipped early to reserve space for a sort marker even when no sort marker is displayed. Auto-fitting a column still accounts for the possible marker, so that sorting after an auto-fit doesn't clip the label.
- When a column label is passed to
Multi-Select:
- Reworked
ImGuiMultiSelectFlags_NoAutoSelectas it carried side-effects that were hardcoded/designed to use multi-selection on checkboxes. (#9391) Specifically removed those undocumented behaviors from_NoAutoSelect:- Clicking a selected/checked item always unselect/uncheck.
- Shift+Click inverts targets value and copy to range.
- Shift+Keyboard copy selection source value to range.
- Those behaviors are still happening on checkboxes used within multi-selection.
Fonts:
- Added
IMGUI_DISABLE_DEFAULT_FONT_BITMAP/IMGUI_DISABLE_DEFAULT_FONT_VECTORto disable embedding either fonts separately. (#9407) - Tweak
CalcTextSize()awkward width rounding/ceiling code to reduce floating-point precision issues altering the result by 1 even at relatively small width. (#791) - Better document the fact that
ImFontAtlas::Clear()/ClearFonts()functions are unlikely to be useful nowadays. Better recover to an edge case of mistakenly callingClearFonts()during rendering. - Fixed an issue where passing a manually created
ImFontAtlastoCreateContext()would incorrectly destroy it inDestroyContext()when ref-count gets back to zero. (#9426) - Destroying an ImGui context using a
ImFontAtlaschecks that the later has no references.
Keyboard/Gamepad Navigation
- Fixed context menu activation with gamepad erroneously testing for _NavEnableKeyboard instead of _NavEnableGamepad. (#9454, #8803, #9270) [@Clownacy]
TreeNode:
- Fixed nav cursor rendering with rounding even though tree nodes don't have it. (#7589)
Inputs:
- Added
GetItemClickedCountWithSingleClickDelay()helper for easy disambiguation between single-click and double-click for actions that needs single-click to do something other than selection. (#8337)- Returns 1 on single-click but delayed by
io.MouseSingleClickDelay. - Returns 2 on double-click, and 2+ on subsequent repeated clicks.
- Added
io.MouseSingleClickDelayto configure default delayed single click delay when usingGetItemClickedCountWithSingleClickDelay()orIsMouseReleasedWithDelay(). (#8337) - Note that
io.MouseSingleClickDelayis always> io.MouseDoubleClickTime.
- Returns 1 on single-click but delayed by
ColorEdit:
- Added
io.ConfigColorEditFlagsto read/modify current color edit/picker settings. - ColorPicker: added
ImGuiColorEditFlags_PickerNoRotateto disable rotation of the S/V triangle when inImGuiColorEditFlags_PickerHueWheelmode. (#9337) [@SeanTheBuilder1] Likely best passed tostyle.ColorEditFlagsto setup globally and once. - ColorButton: small rendering tweak/optimization for the alpha checkerboard.
Style:
- Added
style.MenuItemRounding,ImGuiStyleVar_MenuItemRounding. (#7589, #9375, #9453) - Added
style.SelectableRounding,ImGuiStyleVar_SelectableRounding. (#7589, #9375, #9453) The use of this is discouraged because it can easily create problems rendering e.g. contiguous selection. - Scale the
NavCursorborder thickness when using large values withScallAllSizes().
Settings:
- Windows/Tables settings entries can now record the last used date in YYYYMMDD format, allowing tools to run to e.g. delete entries that haven't been used in X months. (#9460)
- Added
bool io.ConfigIniSettingsSaveLastUsedDateto disable saving that info. (#9460) - Added
int io.ConfigIniSettingsAutoDiscardMonthsto enable a mode where unused settings are automatically discard after xx months. (#9460) - Added a trimming tool under Metrics->Settings, along with a yet-unexposed function.
- The current system date is fed through
ImGuiPlatformIO::Platform_SessionDate, which is automatically set by a call totime()done during context creation. (#9460) - Added
IMGUI_DISABLE_TIME_FUNCTIONSto disable settingplatform_io.Platform_SessionDate. A custom backend may still set it manually. (#9460)
DrawList:
- Minor optimization to
AddLine(),AddLineH(),AddLineV()functions. (#4091) - Added
ImDrawListFlags_TextNoPixelSnapto disable snapping ofAddText()coordinates for a given scope. (#3437, #9417, #2291)
Demo:
- Extract 'Widgets->Tree Nodes->Selectable Nodes' out of the 'Advanced' demo for clarity (manual re-implementation of basic selection).
Debug Tools:
- Added
IM_DEBUG_BREAK()handler for GCC+AArch64/ARM64. [@tom-seddon]
Backends:
- Android: Clear mouse position on touch release (
AMOTION_EVENT_ACTION_UP) to prevent items from staying in hovered state. (#6627, #9474) [@Turtle-PB] - Metal4: Added new Metal 4 backend (forked from Metal 3 backend). (#9458, #9451) [@AmelieHeinrich]
- Metal4: Added Metal-cpp support enabled with
IMGUI_IMPL_METAL_CPPdefine. (#9461) [@MERL10N] - OpenGL2: Backup and restore
GL_UNPACK_ROW_LENGTHandGL_UNPACK_ALIGNMENTwhen updating texture to avoid altering caller GL state. (#8802, #9473) [@Turtle-PB] - OpenGL3: GLSL version detection assume GLSL 410 when GL context is 4.1. Fixes an issue running on macOS with Wine. [#9427, #6577) [@perminovVS]
- OpenGL3: Expose selected render state in
ImGui_ImplOpenGL3_RenderState, allowing to dynamically select between use ofglBindSampler()andglTexParameter(). (#9378) - OpenGL3: Backup and restore
GL_UNPACK_ROW_LENGTHandGL_UNPACK_ALIGNMENTwhen updating texture to avoid altering caller GL state. (#8802, #9473) [@Turtle-PB] - SDL2: Restore
SDL_StartTextInput()/SDL_StopTextInput()in IME handler for on-screen keyboard support on Android. (#7636, #9474) [@Turtle-PB] - SDLRenderer3: Fixed sampler change which didn't work on all graphics backends. (#7616, #9470, #9378)
- SDLRenderer3: Fixed default sampler not being Linear. Regression in 1.92.8. (#7616, #9470, #9378) [@ShiroKSH]
- Win32: Uses
SetProcessDpiAwarenessContext()instead ofSetThreadDpiAwarenessContext()when available, fixing OpenGL DPI scaling issues as e.g. NVIDIA drivers tends to spawn multiple-thread to manage OpenGL. (#9403)
Examples:
- Android: update to AGP 9.2.0 to support Gradle 9.6.0.
- Apple+Metal4: added new example. (#9465, #9451) [@hoffstadt]
- OpenGL3+GLFW/SDL2/SDL3: allow Wine compatibility by passing empty GLSL version string to ImGui_ImplOpenGL3_Init() to let backend decide of a GLSL version based on actual GL version obtained. (#9427, #6577) [@perminovVS]
- OpenGL3+Win32: rework context creation to allow Wine compatibility. (#9427, #6577) [@perminovVS]
- SDL2/SDL3: use
SDL_GetWindowSizeInPixels()to create frame-buffers. Fixes issues with non-fractional framebuffer size on Wayland. (#8761, #9124) [@billtran1632001] - SDL3+Metal4: added new example. (#9458, #9451) [@AmelieHeinrich]
Changes from 1.92.8 to 1.92.9 specific to the Docking+Multi-Viewports branch:
git tag: v1.92.9-docking
Viewports:
- Fixed an issue where the implicit "Debug" window while hidden would erroneously interfere with merging secondary viewports into the main viewport.
Docking:
- Fixed behavior change/regression in 1.92.8 where a window using the
ImGuiWindowFlags_AlwaysAutoResizeflag would have ItemWidth default change when docked. (#9355, #9443) [@reybits]
Backends:
- Metal4: added multi-viewport support. (#9465, #9451) [@hoffstadt]
- Vulkan: fixed use after-free when using multi-viewports with dynamic rendering. (#9390, #9468) [@vikhik, @Turtle-PB]
Gallery
@theor: "A app to import svg, convert it to gcode with streaming to a pen plotter:"
ArcBrush: The node-based image editor
https://arcbrush.com/
https://x.com/albertomoss / https://x.com/ArcBrushApp
Password Defense: "Zero-Knowledge Password Manager with No Database Server" @smoke1080p
https://github.com/smoke1080p/Password-Defense
Tech video about 007 First Light shows a little bit of dear imgui:
https://www.youtube.com/watch?v=m0SJ9i9RtRg + selected shots
@MikhailGorobets: "Iβm developing a cross-platform DICOM Viewer in C++. The project also builds for the web platform via Emscripten.
You can try it here: https://grenzwert.net/ "
by @brenocq: π±> Ket - a quantum circuit debugger:
"I've been building Ket, an open-source quantum computing library for C++20 (with Python bindings), and its centerpiece is a step-through circuit debugger built entirely with Dear ImGui/ImPlot/ImPlot3D. You load an OpenQASM circuit, step through it gate by gate, and watch the wavefunction evolve -- the editable code, the circuit diagram, the full state vector, and per-qubit Bloch spheres all update live."
Website: https://ket.brenocq.com Β· Code: https://github.com/brenocq/ket
The whole thing compiles to WebAssembly, so it runs right in the browser -- no install: π Live demo: https://brenocq.github.io/ket/demo/
@tangtangtang1995 3D Claw
"Hi! Iβm building 3D Claw, an open-source C++17 workspace for 3D point-cloud and mesh processing. Dear ImGui is used for the docked desktop UI: model tree, property panels, algorithm parameter dialogs, AI assistant panels, and live controls around an Easy3D/OpenGL viewport. The main idea is to make geometry algorithms less black-box: supported tools can expose intermediate states, previews, result metrics, and AI-assisted parameter/result feedback."
GitHub: https://github.com/tangtangtang1995/3D-Claw
Article: https://mmwiki.cn/posts/f3a9d120.html
Demo: 3D-Claw
Liberation: The next generation of professional laser show software
https://liberationlaser.com/

Full video:
https://www.youtube.com/watch?v=-ivFNRButXA
@Jaytheway: "Hello! I love ImGui π§‘ I'm using it for JPL Spatial Application that demonstrates some of the features of my audio library JPL Spatial"

MyoGestic, a Real-time EMG / biosignal framework for myocontrol & prosthetics research.

@matrohin _"Hi! Thank you for Dear ImGui and ImPlot! Great libraries!"
I'm developing a process explorer for Linux: https://github.com/matrohin/prock

@eduardodoria: Doriax Engine "A free, open-source 2D/3D game engine and integrated editor for building cross-platform games and interactive projects with Lua or C++."
https://github.com/doriaxengine/doriax / https://doriax.org / more shots
MemDBG is a high-performance memory debugging and inspection suite designed for PlayStation 4 and PlayStation 5 homebrew research environments.
https://github.com/seregonwar/MemDBG
Showcase: https://github.com/seregonwar/MemDBG/blob/main/docs/showcase.md

@Jgocunha: "A C++20 library and interactive application for building and simulating Dynamic Neural Field (DNF) architectures: github/dynamic-neural-field-composer. Also, uses implot and imgui-node-editor."
https://youtu.be/Ss_FOccIM_o
Newly announced and released Box3D by @erincatto:
https://box2d.org/posts/2026/06/announcing-box3d/
Has a testbed and replay viewer:
Plinky debug/visualizer by @mmalex
https://plinkysynth.com/
from https://bsky.app/profile/mmalex.bsky.social/post/3mpxsfa5krs25
"I stream state out over webusb and get the robots to help me write throwaway one-page visualizers. whatever your tool, visualize visualize visualize! and make every bug worse before you fix it, so you can see its true colours :)"

SOFiSTiK suite
"We are very happy to use Dear ImGui in our Viewer application (desktop and web), the interactive post-processing tool part of our structural analysis SOFiSTiK suite:"
https://www.sofistik.com/

...More in gallery threads.
Also see previous releases details.
Note that GitHub are now clamping release notes sometimes really badly, click on a header/title to read full notes.
π° π Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.
