Dear ImGui v1.92.8 🌵
✋ 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 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
-
Unreal Engine users? See "Converging toward a principal Unreal Engine backend/binding for Dear ImGui?"
Check the Useful Extensions/Widgets page for many more.
Changes in v1.92.8 (since v1.92.7)
🆘 1.92.8 contains a signature change for the trailing optional parameters of ImDrawList::AddRect(). C++ users should be notified at compile-time, but languages without type-checking may only be notified at runtime. Read below. This is unusually bold but we occasionally need this to move forward sanely.
🆘 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
- DrawList: swapped the last two arguments of
AddRect(),AddPolyline(),PathStroke().
-- void ImDrawList::AddRect(ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding = 0.0f, ImDrawFlags flags = 0, float thickness = 1.0f);
++ void ImDrawList::AddRect(ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding = 0.0f, float thickness = 1.0f, ImDrawFlags flags = 0);
-- void ImDrawList::AddPolyline(const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness);
++ void ImDrawList::AddPolyline(const ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags = 0);
-- void ImDrawList::PathStroke(ImU32 col, ImDrawFlags flags = 0, float thickness = 1.0f);
++ void ImDrawList::PathStroke(ImU32 col, float thickness = 1.0f, ImDrawFlags flags = 0);Added inline redirection functions when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off.
Marked the old functions are =delete when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is on, to allow for better type-checking.
Effectively the typical call site is simplified:
-- window->DrawList->AddRect(p_min, p_max, color, rounding, ImDrawFlags_None, border_size);
++ window->DrawList->AddRect(p_min, p_max, color, rounding, border_size);- Notes:
- Users of C++ and other languages with type-checking will be notified at compile-time of any mistakes.
- Users of high-level bindings or languages with no type-checking will be notified at runtime via an assert for invalid flags value. If you are a binding maintainer consider doing something to facilitate transition or error detection.
- This is perhaps the worst breaking change in our history :( but it makes ImDrawList function signatures consistent. As we are aiming to add flags and features to variety of ImDrawList functions, that consistency becomes more important. The new order is also more convenient as
flagsare less frequently used thanthicknessin real code. - As a general policy in Dear ImGui, all our flags default to 0 so ImDrawFlags_None was likely written 0 in some call sites.
- Consider adding
#define IMGUI_DISABLE_OBSOLETE_FUNCTIONSin your imconfig.h, even temporarily, to clean up legacy code.
- DrawList: obsoleted
ImDrawCallback_ResetRenderStatein favor of usingImGui::GetPlatformIO().DrawCallback_ResetRenderState, which is part of our new standard draw callbacks. (#9378) Redirecting the earlier value into the later one when set, so both old and new code should work. - Backends: Vulkan: redesigned to use separate ImageView + Sampler instead of Combined Image Sampler. This change allows us to facilitate changing samplers, in line with other backends. (#914) [@yaz0r, @ocornut]
- When creating your own descriptor pool (instead of letting backend creates its own):
- Before: need at least
IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZEdescriptors of typeVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER. - After: need at least
IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZEdescriptors of typeVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE+IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZEdescriptors of typeVK_DESCRIPTOR_TYPE_SAMPLER.
- Before: need at least
- When registering custom textures: changed ImGui_ImplVulkan_AddTexture() signature to remove Sampler.
- Before:
ImGui_ImplVulkan_AddTexture(VkSampler, VkImageView, VkImageLayout) - After:
ImGui_ImplVulkan_AddTexture(VkImageView, VkImageLayout) - Kept inline redirection function that ignores the sampler (will obsolete).
- Before:
- When creating your own descriptor pool (instead of letting backend creates its own):
- Backends: DirectX10, DirectX11, SDLGPU3, Vulkan: removed samplers from
ImGui_ImplXXXX_RenderState. (#9378) Prefer to use backend-agnostic DrawCallback_SetSamplerLinear which works everywhere! If there is a legit need/request for them or any render state we can always add them back.
Other Changes
DrawList:
- Made
AddCallback()user data default to Null for convenience. - Added
AddLineH(),AddLineV()helpers to draw horizontal and vertical lines. [@memononen] - Added room in
ImGuiPlatformIOfor standard backend-agnostic draw callbacks. Those callbacks are setup/provided by the backend and available in most of our standard backends. They allow backend-agnostic code from e.g. switching to a Nearest/Point sampler without messing with custom Renderer-specific callbacks:platform_io.DrawCallback_ResetRenderState; // Request to reset the graphics/render state.platform_io.DrawCallback_SetSamplerLinear; // Request to set current texture sampling to Linearplatform_io.DrawCallback_SetSamplerNearest; // Request to set current texture sampling to Nearest/Point- Note that some backends might not support all callbacks. (#9378, #9371, #3590, #8926, #2973, #7485, #7468, #6969, #5118, #7616, #9173, #8322, #7230, #5999, #6452, #5156, #7342, #7592, #7511)
InputText:
- InputTextMultiline: fixed an issue processing deactivation logic when an active multi-line edit is clipped due to being out of view.
- Fixed a crash when toggling ReadOnly while active. (#9354)
CharFiltercallback event sets CursorPos/SelectionStart/SelectionEnd. (#816)
Tables:
- Fixed issues reporting ideal size to parent window/container: (#9352, #7651)
- When both scrollbars are visible but only one of ScrollX/ScrollY was explicitly requested.
- When vertical scrollbar was not at the top, the computation was often incorrect.
Windows:
- Fixed a single-axis auto-resizing feedback loop issue with nested containers and varying scrollbar visibility. (#9352)
- Detect and report error when calling End() instead of EndPopup() on a popup. (#9351)
- Child windows with only
ImGuiChildFlags_AutoResizeYflag keep using the proportional defaultItemWidth. (#9355) - Using mouse wheel to scroll takes and keeps ownership of the corresponding keys (e.g.
ImGuiKey_MouseWheelY) while a wheeling window is locked. (#2604, #3795)
InputInt, InputFloat, InputScalar:
- Reinstated
ImGuiInputTextFlags_EnterReturnsTruesupport which was removed in 1.91.4. (#8665, #9299, #8065, #3946, #6284, #9117)- Fixed the fact that it didn't return true when validating same value.
- Fixed losing value when tabbing out or losing focus.
- Made it that pressing +/- step buttons also return true, which is in line with 1.91.4 behavior.
- In a majority of cases you should use
IsItemDeactivatedAfterEdit()instead, but it still has a few edge cases flaws (to be addressed soon).
- Allow passing a format string that does not display the scalar value. Parsing input with default format for the type. (#9385) [@FireFox2000000]
Multi-Select:
- Fixed an issue using Multi-Select within a Table causing column width measurement to be invalid when trailing column contents is not submitted in the last row. (#9341, #8250)
- Fixed an issue using Multi-Select within a Table with the right-most column visible, which could lead to an extra vertical offset in the Header row. (#8250)
Multi-Select + Box-Select:
- Fixed an issue using
ImGuiMultiSelectFlags_BoxSelect1dmode while scrolling. Notably, using mouse wheel while holding a box-selection could lead items close to windows edges from not being correctly unselected. (#7994, #8250, #7821, #7850, #7970) - Improved dirty/unclip rectangle logic for
ImGuiMultiSelectFlags_BoxSelect2d. - Fixed an issue using
ImGuiMultiSelectFlags_BoxSelect2dmode, where items out of view wouldn't be properly selected while scrolling while mouse cursor is hovering outside of selection scope. (#7994, #1861, #6518) - Fixed an issue where items out of horizontal view would sometimes lead to incorrect merging of sequential selection requests while also scrolling fast enough to overlap multiple rows during a frame. (#7994, #1861, #6518)
- Fixed an issue using
ImGuiMultiSelectFlags_BoxSelect2dmode in a Table while relying on theTableNextColumn()return value to perform coarse clipping. (#7994) - Disabled merging consecutive selection requests as we have no reliable way of detecting if user has submitted all consecutive items without clipping gaps, and
ImGuiSelectionUserDatais technically opaque storage. (#7994, #1861)
(we will probably bring this back as a minor optimization if we have a way to for user to tell usImGuiSelectionUserDataare indices) - Fixes for using across nested child windows. (#8364)
- Box-Select + Clipper: fixed an issue selecting items while scrolling while a clipper active. (#7994, #8250, #7821, #7850, #7970)
- Box-Select + Tables: fixed an issue using box-selection in a tables with items straying out of columns boundaries. (#7994, #2221)
- Box-Select + Tables: fixed an issue when calling
BeginMultiSelect()in a table before layout has been locked (first row or headers row submitted). (#8250)
Menus:
- BeginMenu()/MenuItem(): fixed accidental triggering of child menu items when opening a menu inside a small host window forcing the child menu window to be repositioned under the mouse cursor. (#8233, #9394)
Done by reworkingBeginMenu()/MenuItem(): they previously avoiding taking ActiveID + key/click ownership (in order to allow releasing button on another item). Now they take them and release them once the mouse is moved outside item boundaries.
Inputs:
SetItemKeyOwner(): return true if ownership has been requested, which typically needs to to checked for gating further tests. This is important as the function may fail. (#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641)- SetItemKeyOwner(): does not set ownership is key is already taken. Effectively this makes using
SetItemKeyOwner(ImGuiKey_MouseWheelY)over an item work as expected while not having item react if a scroll wheel is actively in progress. May be subject to further redesign, e.g. conditional flags. Feedback welcome!
Style:
- Checkbox: added
ImGuiCol_CheckboxSelectedBgto change or accentuate the background color of checked/mixed checkboxes. (#9392) - Added
ImGuiStyleVar_DragDropTargetRounding. (#9056) - Fixed vertical scrollbar top coordinates when using thick borders on windows with no title bar and no menu bar. (#9366)
Fonts:
- imgui_freetype: add FreeType headers & compiled version in 'About Dear ImGui' details.
- Assert when using MergeMode with an explicit size over a target font with an implicit size, as scale factor are likely erroneous. (#9361)
Clipper:
- Improved error reporting when misusing the clipper inside a table (prioritize reporting the common clipper error over a table sanity check assert). (#9350)
- Tweaked assert triggering when first item height measurement fails, and made it a better recoverable error. (#9350)
Misc:
- Minor optimization: reduce redundant label scanning in common widgets.
- Added missing Test Engine hooks for
PlotLines(),PlotHistogram(),VSliderXXX()andTableHeader()functions.
Demo:
- Added simple demo for a scrollable/zoomable image viewer with a grid. Available in
Examples->Image ViewerandWidgets->Images.
Backends:
- Added support for new standardized draw callbacks in most backends: (#9378) (Vulkan backend by @yaz0r, Metal by @ssh4net, others by @ocornut)
Allegro5: Reset n/a n/a
DX9: Reset SetSamplerLinear SetSamplerNearest
DX10: Reset SetSamplerLinear SetSamplerNearest
DX11: Reset SetSamplerLinear SetSamplerNearest
DX12: Reset SetSamplerLinear SetSamplerNearest
Metal: Reset SetSamplerLinear SetSamplerNearest
OpenGL2: Reset SetSamplerLinear SetSamplerNearest
OpenGL3+: Reset SetSamplerLinear* SetSamplerNearest*
SDLGPU3: Reset SetSamplerLinear SetSamplerNearest
SDLRenderer2: Reset n/a n/a
SDLRenderer3: Reset SetSamplerLinear SetSamplerNearest
Vulkan: Reset SetSamplerLinear SetSamplerNearest
WebGPU: Reset SetSamplerLinear SetSamplerNearest
- GLFW: added a Win32-specific implementation of
ImGui_ImplGlfw_GetContentScaleXXXXfunctions for legacy GLFW 3.2. (#9003) - Metal: avoid redundant vertex buffer bind in
SetupRenderState(), which leads to validation issue. (#9343) [@Hunam6] - Metal: use a dedicated
bufferCacheLockto avoid crashing whenbufferCacheis replaced by a new object while being used for@synchronize(). (#9367) [@andygrundman] - SDL2: made
ImGui_ImplSDL2_GetContentScaleForWindow()/ImGui_ImplSDL2_GetContentScaleForDisplay()helpers return a minimum of 1.0f, as some Linux setup seems to report <1.0f value and this breaks scaling border size. (#9369) - WebGPU: rework choice/detection of using WGSL/SPIR-V shader on WGVK. (#9316, #9246, #9257, #9387)
Examples:
- Update VS toolset in all .vcxproj from VS2015 (v140) to VS2017 (v141). The later is the first that supports vcpkg. Onward we will likely stop testing building the library with VS2015.
- GLFW+Vulkan, SDL2+Vulkan, SDL3+Vulkan, Win32+Vulkan: reworked to create a descriptor pool with:
IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZEdescriptors of typeVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZEdescriptors of typeVK_DESCRIPTOR_TYPE_SAMPLER.
Changes from 1.92.7 to 1.92.8 specific to the Docking+Multi-Viewports branch:
git tag: v1.92.8-docking
- Docking: toggling tab bar visibility marks saved settings as dirty. (#9380)
- Viewports: added opaque
void* PlatformIconDatastorage in viewport andImGuiWindowClassto allow passing icon information to a custom backend or hook. (#2715)
Gallery
@dunkbing: "DearSQL — Native SQL client for macOS, Linux & Windows."
https://dearsql.dev
@devkaiwang: "New version of Intel XeSS Inspector, a powerful debugging and validation tool designed for Intel XeSS. It supports XeSS Super Resolution (XeSS-SR), XeSS Frame Generation (XeSS-FG), and Xe Low Latency (XeLL)."
@henri23: Voltrum: An open-source EDA software for microchip design and simulation, written in c-style c++ with custom Vulkan rendering.
https://github.com/henri23/voltrum
@BigJk: "I build a fun prototype last week called StdUI. The idea is making a UI language agnostic by being completely controlled via stdin/stdout. So any language can spawn the UI-engine as sub-process and tell it what to display and react to events. Layout is done via HTML/CSS (using ImHTML) and interactive widgets are ImGui components like inputs and sliders placed into the layout."
<!-- these render to ImGui elements that emit events -->
<ui-button text="Save" action="save"></ui-button>
<ui-input id="name" type="text" placeholder="Your name" value=""></ui-input>
<ui-select id="theme" options="Light|Dark|System" value="Light"></ui-select>
<ui-slider id="vol" min="0" max="1" value="0.5"></ui-slider>
<ui-checkbox id="notify" label="Enable notifications" checked="false"></ui-checkbox>The examples in the repo are using golang to interface with the UI. It's not intended for complex UI's, but for some smaller stuff it might be fun 😃

more about StdUI
@memononen's Data Inheritance model
https://github.com/memononen/data_inheritance
@aiekick: "Just for fun, working on my ImGenie (for reproducing the Genie effect of MacOs). Now released ImGenie! See this demo With ImCoolBar or play with this Emscripten demo"
@OusmBlueNinja: "A Game engine I'm working on called "Inertia" with a 100% C23 core with a heavily modified, DearImGui Based editor. I ended writing a backend that hooks into my Renderer."
https://dock-it.dev/iDENTITY-Technology/Inertia


more about Inertia
dcmake: CMake debugger front-end
Code: https://github.com/skeeto/dcmake/ Blog: https://nullprogram.com/blog/2026/04/07/
@chrispruett: Story Machine is a 2D game engine designed for speed and accessibility. Two games have shipped on this engine so far and a third (SUSPICIOUS HOLES) is currently in development. This is vanilla Dear Imgui with no hacks or mods, just a lot of widgets built on top. Fonts and colors are sourced from the OS! Runs on Mac and Windows and builds games for Mac/Windows/Linux/Web/Switch.
...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.