Releases: ocornut/imgui
v1.92.4
v1.92.4 ~
❤️ Last year was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
New studio enters!
- Thatgamecompany ! 🌻
And usual supporters:
- Asobo Studio !
- BeamNG !
- G3Dvu !
- Gravity Well !
- Lucid Games !
- MachineGames !
- Mobigame !
- OTOY !
- Planestate Software !
- Riot Games !
- SCS Software !
- Scorewarrior !
- Sebastian Schöner !
- Sofistik !
- Supercell !
- Tanius Technology !
- Valve !
- Vector Unit !
- and maybe some anonymous ones.
❤️ And many individuals ❤️
Thanks to Adam B, Daniel C, Geoffrey E, Israelle W, Jean-Sebastien R, Jonathan G, Karl H, Liam W, Lucas G, Martin G, Mathieu W, Minh D L, Nicholas C, Peter R, Simon V B ! Also thanks to @pthom, @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!
Changes (since v1.92.3)
🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures introduced in v1.92.0 ?
You can read the newly improved docs/BACKENDS.md.
Breaking Changes
- Backends:
- TreeNode, Selectable, Clipper: commented out legacy names obsoleted in 1.89.7 (July 2023) and 1.89.9 (Sept 2023):
ImGuiTreeNodeFlags_AllowItemOverlap-->ImGuiTreeNodeFlags_AllowOverlap
ImGuiSelectableFlags_AllowItemOverlap-->ImGuiSelectableFlags_AllowOverlap
ImGuiListClipper::IncludeRangeByIndices()-->ImGuiListClipper::IncludeItemsByIndex() - Vulkan: moved some fields in
ImGui_ImplVulkan_InitInfo:
init_info.RenderPass-->init_info.PipelineInfoMain.RenderPass
init_info.Subpass-->init_info.PipelineInfoMain.Subpass
init_info.MSAASamples-->init_info.PipelineInfoMain.MSAASamples
init_info.PipelineRenderingCreateInfo-->init_info.PipelineInfoMain.PipelineRenderingCreateInfo
It makes things more consistent and was desirable to introduce new settings for secondary viewports. (#8946, #8110, #8111, #8686) [@ocornut, @SuperRonan, @sylmroz] - Vulkan: renamed
ImGui_ImplVulkan_MainPipelineCreateInfo-->ImGui_ImplVulkan_PipelineInfo(introduced very recently and only used byImGui_ImplVulkan_CreateMainPipeline()so it should not affect many users). (#8110, #8111) - Vulkan: helper
ImGui_ImplVulkanH_CreateOrResizeWindow()added aVkImageUsageFlags image_usageargument. It was previously hardcoded toVK_IMAGE_USAGE_COLOR_ATTACHMENT_BITand defaults to that when the value is 0. In theory the function is an internal helper but since it's used by our examples some may have used it. (#8946, #8111, #8686)
- TreeNode, Selectable, Clipper: commented out legacy names obsoleted in 1.89.7 (July 2023) and 1.89.9 (Sept 2023):
Other Changes
- Windows: added lower-right resize grip on child windows using both
ImGuiChildFlags_ResizeXandImGuiChildFlags_ResizeYflags. (#8501) [@aleksijuvani] The grip is not visible before hovering to reduce clutter. - Style: added
ImGuiCol_UnsavedMarker, color of the unsaved document marker when usingImGuiWindowFlags_UnsavedDocument/ImGuiTabItemFlags_UnsavedDocument. (#8983) - IO: added
ImGuiPlatformIO::ClearPlatformHandlers(),ClearRendererHandlers()helpers to null all handlers. (#8945, #2769) - Inputs:
- Shortcuts: added support for combining
ImGuiInputFlags_RouteFocused(which is the default route) withImGuiInputFlags_RouteOverActive, allowing to steal shortcuts from active item without using global routing. (#9004)
- Shortcuts: added support for combining
- InputText:
- Fixed single-line
InputText()not applying fine character clipping properly (regression in 1.92.3). (#8967) [@Cyphall] - Fixed an infinite loop error happening if a custom input text callback modifies/clear
BufTextLenbefore callingInsertChars().
(regression from 1.92.3). Note that this never really worked correctly, but previously it would only temporary wreck cursor position, and since 1.92.3 it would go in an infinite loop. (#8994, #3237)
- Fixed single-line
- Textures:
- Fixed a crash if texture status is set to
ImTextureStatus_WantDestroyby a backend after it had already been destroyed. This would typically happen when callingImGui_ImplXXXX_InvalidateDeviceObjects()helpers twice in a row. (#8977, #8811) - Allowed backend to destroy texture while inside the
NewFrame/EndFramescope. Basically if a backend decide to destroy a texture that we didn't request to destroy (for e.g. freeing resources) the texture is immediately set to aImTextureStatus_WantCreatestatus again. (#8811) - Fixed an issue preventing multi-contexts sharing a
ImFontAtlasfrom being possible to destroy in any order. - Fixed not updating
ImTextureData'sRefCountwhen destroying a context using a sharedImFontAtlas, leading standard backends to not properly free texture resources. (#8975) [@icrashstuff]
- Fixed a crash if texture status is set to
- Demo: fixed layout issue in
"Layout & Scrolling -> Scrolling"section. - Misc: Relaxed internal assert in
MarkItemEdited()to allow for more use cases. (#8997) - Misc: Debuggers: added type formatters for the LLDB debuggers (e.g. Xcode, Android Studio & more) to provide nicer display for ImVec2, ImVec4, ImVector etc. See misc/debuggers/ for details. (#8950) [@mentlerd]
- CI: updated Windows CI scripts to generate/use VulkanSDK. (#8925, #8778) [@yaz0r]
- Docs: updated FAQ with new "What is the difference between Dear ImGui and traditional UI toolkits?" entry. (#8862)
- Backends:
- All backends call
ImGuiPlatformIO::ClearPlatformHandlers()andClearRendererHandlers()on shutdown, so as not to leave function pointers which may be dangling when using backend in e.g. DLL. (#8945, #2769) - DirectX12: reuse a command list and allocator for texture uploads instead of recreating them each time. (#8963, #8465) [@RT2Code]
- DirectX12: Rework synchronization logic. (#8961) [@RT2Code] (presumably fixes old hard-to-repro crash issues such as #3463, #5018).
- DirectX12: Reuse texture upload buffer and grow it only when necessary. (#9002) [@RT2Code]
- DirectX12: Enable swapchain tearing if available. (#8965) [@RT2Code]
- OpenGL3: fixed GL loader to work on Haiku OS which does not support
RTLD_NOLOAD. (#8952) [@Xottab-DUTY, @threedeyes] - GLFW: fixed build on platform that are neither Windows, macOS or known Unixes (Regression in 1.92.3). (#8969, #8920, #8921) [@oktonion]
- SDL2,SDL3: avoid using the
SDL_GetGlobalMouseState()path when one of our window is hovered, as the event data is reliable and enough in this case. - Win32: minor optimization not submitting gamepad io again if XInput's
dwPacketNumberhas not changed. (#8556) [@MidTerm-CN] - Vulkan: added a way to specify custom shaders by filling init fields
CustomShaderVertCreateInfoandCustomShaderFragCreateInfo. (#8585, #8271) [@johan0A] - DX9,DX10,DX11,DX12,Metal,Vulkan,WGPU,SDLRenderer2,SDLRenderer3: ensure that a texture in
ImTextureStatus_WantDestroystate always turn to ImTextureStatus_Destroyed even if your underlying graphics data was already destroyed. (#8977)
- All backends call
- Examples:
Changes from 1.92.3 to 1.92.4 ...
v1.92.3
v1.92.3: Autumn is looming ~
❤️ Last year was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
- Aras P !
- Asobo Studio !
- BeamNG !
- FUTO !
- G3Dvu !
- Gravity Well !
- id Software !
- Lucid Games !
- MachineGames !
- Mobigame !
- OTOY !
- Planestate Software !
- Riot Games !
- SCS Software !
- Scorewarrior !
- Sebastian Schöner !
- Sofistik
- Supercell !
- Tanius Technology !
- Valve !
- Vector Unit
❤️ And many individuals ❤️
Thanks to @pthom, @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!
Changes (since v1.92.2)
🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures introduced in v1.92.0 ?
You can read the newly improved docs/BACKENDS.md.
Changes
- Fonts: fixed merging a font and specifying a font target in DstFont that's not the last added font (regression in 1.92). (#8912)
- Fonts: fixed an assertion failure when a rectangle entry has been reused 1024 times (e.g. due to constant change of font size). (#8906) [@cfillion]
- Clipper, Tables: added
ImGuiListClipperFlags_NoSetTableRowCountersas a way to disable the assumption that 1 clipper item == 1 table row, which breaks when e.g. using clipper with ItemsHeight=1 in order to clip in pixel units. (#8886) - Scrollbar, Style: added configurable
style.ScrollbarPaddingvalue and correspondingImGuiStyleVar_ScrollbarPaddingenum, instead of an hard-coded computed default. (#8895) - Nav: fixed Ctrl+Tab window appearing as empty when the sole active and focused window has the
ImGuiWindowFlags_NoNavFocusflag. (#8914) - Nav: fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused.
- Bullet: fixed tessellation which looked out of place in very large sizes.
- InputText: added
ImGuiInputTextFlags_WordWrapflag to word-wrap multi-line buffers. (#3237, #952, #1062, #7363). Current caveats:- This is marked as beta because not being tested enough. Please report any incorrect cursor movement, selection behavior etc. bug to #3237.
- Wrapping style is not ideal. Wrapping of long words/sections (e.g. words larger than total available width) may be particularly unpleasing.
- Wrapping width needs to always account for the possibility of a vertical scrollbar.
- It is currently much slower than regular text fields:
- Ballpark estimate of cost on my 2019 desktop PC: For a 100 KB text buffer: +~0.3 ms/+~1.0 ms (Optimized vs Debug builds).
- The CPU cost is very roughly proportional to text length, so a 10 KB buffer should cost about ten times less.
- InputText, InputInt, InputFloat: fixed an issue where using Escape to revert would not write back the reverted value during the
IsItemDeactivatedAfterEdit()frame if the provided input buffer doesn't store temporary edits. (regression in 1.91.7) (#8915, #8273) - InputText: fixed an issue where using Escape with
ImGuiInputTextFlags_EscapeClearsAllwould not write back the cleared value during theIsItemDeactivatedAfterEdit()frame if the provided input buffer doesn't store temporary edits. (#8915, #8273) - InputText: allow passing an empty string with
buf_size==0. In theory the buffer size should always account for a zero-terminator, but idioms such as usingInputTextMultiline()withImGuiInputTextFlags_ReadOnlyto display a text blob are facilitated by allowing this. (#8907) - InputText: refactored internals to simplify and optimizing rendering of selection. Very large selection (e.g. 1 MB) now take less overhead.
- InputText: revert a change in 1.79 where pressing Down or PageDown on the last line of a multi-line buffer without a trailing carriage return would keep the cursor unmoved. We revert back to move to the end of line in this situation.
- InputText: fixed pressing End (without Shift) in a multi-line selection from mistakenly moving cursor based on selection start.
- Focus, InputText: fixed an issue where
SetKeyboardFocusHere()did not work onInputTextMultiline()fields withImGuiInputTextFlags_AllowTabInput, since they normally inhibit activation to allow tabbing through multiple items. (#8928) - Selectable: added
ImGuiSelectableFlags_SelectOnNavto auto-select an item when moved into, unless Ctrl is held. (automatic when in a BeginMultiSelect() block). - TabBar: fixed an issue were forcefully selecting a tab using internal API would be ignored on first/appearing frame before tabs are submitted (#8929, #6681)
- DrawList: fixed
ImDrawList::CloneOutput()unnecessarily taking a copy of theImDrawListSharedDatapointer, which could to issue when deleting the cloned list. (#8894, #1860) - DrawList: made
AddCallback()assert when passing a null callback. - Debug Tools: ID Stack Tool: fixed using fixed-size buffers preventing long identifiers from being displayed in the tool. (#8905, #4631)
- Debug Tools: ID Stack Tool: when ### is used, noncontributing prefix before the ### is now skipped. (#8904, #4631)
- Debug Tools: ID Stack Tool: added option to hex-encode non-ASCII characters in output path. (#8904, #4631)
- Debug Tools: ID Stack Tool: fixed a crash when using
PushOverrideID(0)during a query. (#8937, #4631) - Debug Tools: Fixed assertion failure when opening a combo box while using
io.ConfigDebugBeginReturnValueOnce/io.ConfigDebugBeginReturnValueLoop. (#8931) [@harrymander] - Demo: tweaked
ShowFontSelector()andShowStyleSelector()to update selection while navigating. - CI: Updates Windows CI to use a more recent VulkanSDK. (#8925, #8778) [@yaz0r]
- Examples: Android: Android+OpenGL3: update Gradle project (#8888, #8878) [@scribam]
- Examples: GLFW+OpenGL2, GLFW+Vulkan, GLFW+Metal, Win32+Vulkan: Fixed not applying content scale consistently with other examples. (#8921, #8756)
- Backends: GLFW: distinguish X11 vs Wayland to fix various scaling issues. (#8920, #8921) [@TheBrokenRail, @pthom, @ocornut]
- Window/monitor content scales are always reported as 1.0 on Wayland.
- Framebuffer scales are always reported as 1.0 on X11.
- Backends: SDL2: window/monitor content scales are always reported as 1.0 on Wayland. (#8920, #8921) [@TheBrokenRail, @pthom, @ocornut]
- Backends: SDL3: use
SDL_GetWindowDisplayScale()on Mac to obtainDisplayFrameBufferScale, fixing incorrect values during resolution changes e.g. going fullscreen. (#8703, #4414) [@jclounge] - Backends: SDL_GPU: Added
ImGui_ImplSDLGPU3_InitInfo::SwapchainCompositionandPresentModeto configure how secondary viewports are created. Currently only used multi-viewport mode. (#8892) [@PTSVU] - Backends: Vulkan: added
ImGui_ImplVulkan_CreateMainPipeline()to recreate pipeline without reinitializing backend. (#8110, #8111) [@SuperRonan]
Changes from 1.92.2 to 1.92.3 specific to the Docking+Multi-Viewports branch:
- DPI: fixed
io.ConfigDpiScaleFontsfrom ever working since 1.92 (the irony being that it is when it started to make sense!). As a reminder, the option automatically copy the current viewport's DpiScale tostyle.FontScaleDpi. This is why we separated thestyle.FontScaleMainandstyle.FontScaleDpiscaling factor, as the later is meant to be overwritten. (#8832, #8465) - DPI: Fixed obsoleted
ImGuiConfigFlags_DpiEnableScaleFonts/_DpiEnableScaleViewportsnames from setting the equivalent `io.ConfigDpiScaleFo...
v1.92.2b
v1.92.2b: Hotfix for 1.92.2
Changes (since v1.92.2)
This is a hot fix for v1.92.2 which has issues with using IsItemHovered() on disabled items or items with no identifier while clicking on them.
- Fixed
IsItemHovered()failing on disabled items and items that have no identifier (e.g. Text() calls) when holding mouse button. (Regression in 1.92.2). (#8877, #8883) - Made
IsItemHovered()on holding mouse button down on disabled items not leak between items when the window cannot be moved. - Backends: Allegro5: Fixed texture format setup which didn't work on all setups/drivers. (#8770, #8465)
- Backends: Allegro5: Added
ImGui_ImplAllegro5_SetDisplay()function to change current ALLEGRO_DISPLAY, as Allegro applications often need to do that. - Backends: Allegro5: Fixed missing support for
ImGuiKey_PrintScreenunder Windows, as raw Allegro 5 does not receive it.
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.
❤️ Previous summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
💰 🙏 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.
v1.92.2
v1.92.2: Summer 2025
❤️ Previous summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
- BeamNG !
- G3Dvu !
- OTOY !
- Riot Games ! 🆕 👍 Welcome!
- Scorewarrior ! 🆕 👍 Welcome!
- Supercell !
- Tanius Technology !
- Valve !
- Aras P !
- Asobo Studio !
- FUTO !
- Gravity Well !
- id Software !
- Lucid Games !
- MachineGames !
- Mobigame !
- Planestate Software !
- SCS Software !
- Sofistik
- Sebastian Schöner !
- Vector Unit 🆕 👍 Welcome!
❤️ And many individuals ❤️
Thanks to @GamingMinds-DanielC, @cfillion, @PathogenDavid & more for their help with GitHub answers!
Changes (since v1.92.1)
This is a general maintenance release addressing some issues discovered in 1.92.0.
Read v1.92.0 Changelog for details and links on larger changes.
🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ?
You can read the newly improved docs/BACKENDS.md.
TL;DR;
- New tab bar resizing logic (combining shrinking and scrolling) and configuration options.
- Fixed Vulkan backend on some setup (following 1.92.0) changes.
- SDL_GPU backend changes
ImTextureIDto beSDL_GPUTexture*(!). - Keyboard/navigation fixes, table fixes, font fixes, new SDL3+Metal example & many more.
Breaking Changes
- Tabs: Renamed
ImGuiTabBarFlags_FittingPolicyResizeDowntoImGuiTabBarFlags_FittingPolicyShrink. Kept inline redirection enum (will obsolete). (#261, #351) - Backends: SDL_GPU3: changed
ImTextureIDtype fromSDL_GPUTextureSamplerBinding*toSDL_GPUTexture*, which is more natural and easier for user to manage. If you need to change the current sampler, you can access theImGui_ImplSDLGPU3_RenderStatestruct. (#8866, #8163, #7998, #7988)
Other Changes
- Fixed an old inconsistency between
IsItemHovered()and internal hovering check, whereIsItemHovered()would return true to mouse was first clicked on the background of a non-moveable window then moved over the item or button. Note that while it is consistent with other logic, there is a possibility that some third-party code may accidentally relied on this. One can always useImGuiHoveredFlags_AllowWhenBlockedByActiveItemto bypass the active id check. (#8877) [@achabense, @ocornut] - Fonts: fixed an issue when a font using
MergeModehas a reference size specified but the target font doesn't. Usually either all fonts should have a reference size (only required when specifying e.g.GlyphOffset), or none should have a reference size. - Fonts: fixed a crash when changing texture format when using a legacy backend. Most commonly would happen when calling
GetTexDataAsRGBA32()then immediately callingGetTexDataAsAlpha8(). (#8824) - Windows: fixed an issue where resizable child windows would emit border logic when hidden/non-visible (e.g. when in a docked window that is not selected), impacting code not checking for
BeginChild()return value. (#8815) - Textures: Fixed support for
#define ImTextureID_Invalidto non-zero value:ImFontAtlas()was incorrectly cleared with zeroes. (#8860, #8745) [@cfillion] - Tables: fixed
TableGetRowIndex()which never correctly worked when using a clipper (it exists for consistency but is almost never used, as it is often more convenient to use index in caller-code, whereasTableGetRowIndex()includes header rows). - Tables: fixed imgui_internal.h's
TableGetHoveredRow()the same way. (#7350, #6588, #6250) - Tabs: added new fitting policy
ImGuiTabBarFlags_FittingPolicyMixedand made it the default. This policy shrink tab width down to a given amount, and then beyond that it enable scrolling buttons. (#3421, #8800) - Tabs: added
style.TabMinWidthShrink,ImGuiStyleVar_TabMinWidthShrinkto control the width to shrink to inImGuiTabBarFlags_FittingPolicyMixedmode. (#3421, #8800). - Tabs: when scrolling is enabled, track selected tabs when resizing down parent container. This does not prevent to horizontally scroll it out of view during normal operations. (#3421, #8800)
- Tabs: added
style.TabMinWidthBase,ImGuiStyleVar_TabMinWidthBaseto control the base minimum width of a tab (default to 1.0f). This is the size before any potential shrinking is applied. - Tabs: fixed tab bar underline not drawing below scroll buttons, when they are enabled (minor regression from 1.90). (#6820, #4859, #5022, #5239)
- Tabs: made scrolling buttons never keyboard/gamepad navigation candidates.
- Nav, Tables: fixed navigation within scrolling tables when item boundaries goes beyond columns limits. The fix done in 1.89.6 didn't work correctly on scrolling windows. (#8816, #2221)
- Nav: fixed a bug where
ImGuiKey_NavGamepadMenu(==ImGuiKey_GamepadFaceLeft) button couldn't toggle between main and menu layers while navigating a Modal window. (#8834) - Error Handling: minor improvements to error handling for
TableGetSortSpecs()andTableSetBgColor()calls. (#1651, #8499) - Misc: fixed building with
IMGUI_DISABLE_DEBUG_TOOLSonly. (#8796) - Misc: fixed building with
IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATIONsince 1.92.0. (#8794) - Misc: removed more redundant inline static linkage from imgui_internal.h to facilitate using in C++ modules. (#8813, #8682, #8358) [@stripe2933]
- Misc: ImVector: skip
memcpy()inoperator=ifDataisn't initialized in order to play nice with-fsanitize=undefined. (#8874) [@i25e] - CI: Added SDL3 builds to MacOS and Windows. (#8819, #8778) [@scribam]
- CI: Updated Windows CI to use a more recent SDL2. (#8819, #8778) [@scribam]
- Examples: SDL3+Metal: added SDL3+Metal example. (#8827, #8825) [@shi-yan]
- Examples: SDL3+SDL_GPU: use
SDL_WaitAndAcquireGPUSwapchainTexture()instead ofSDL_AcquireGPUSwapchainTexture(). (#8830) [@itsdanott] - Examples: SDL3+SDL_GPU: use SDL_GPU_PRESENTMODE_VSYNC present mode.
- Backends: OpenGL3: add and call embedded loader shutdown in
ImGui_ImplOpenGL3_Shutdown()to facilitate multiple init/shutdown cycles in same process. (#8792) [@tim-rex] - Backends: OpenGL2, OpenGL3: set
GL_UNPACK_ALIGNMENTto 1 before updating textures. (#8802) [@Daandelange] - Backends: SDL_GPU3: expose current
SDL_GPUSampler*in theImGui_ImplSDLGPU3_RenderStatestruct. (#8866, #8163, #7998, #7988) - Backends: Vulkan: Fixed texture update corruption introduced in 1.92.0, affecting some drivers/setups. (#8801, #8755, #8840) [@Retro52, @Miolith]
- Backends: Vulkan: Avoid calling
vkCmdBindDescriptorSets()when texture has not changed. (#8666) [@micb25]
Changes from 1.92.1 to 1.92.2 specific to the Docking+Multi-Viewports branch:
- Windows, Viewport: fixed an issue where interrupting a viewport move with e.g. a
ClearActiveID()call would leave the dragged viewport with the normally temporaryImGuiViewportFlags_NoInputsflag, preventing further interactions with the viewport. (#5324) (thanks @MdeLaharpe) - Viewports: added
io.ConfigViewportPlatformFocusSetsImGuiFocusto opt-out of focusing imgui windows When a platform window is focused (e.g. using Alt+Tab, clicking Platform Title Bar). In principle this is better enabled but we provide an opt-out because some Linux window managers tend to eagerly focus windows (on e.g. mouse hover, or even on a simple window pos/size change). (#6299, #6462)
Gallery
@JCox06: _"Recently I have been working on a molecular editor with the main user interface wri...
v1.92.1
v1.92.1: Maintenance release
❤️ Previous summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
- BeamNG !
- G3Dvu !
- OTOY !
- Riot Games ! 🆕 👍 Welcome!
- Scorewarrior ! 🆕 👍 Welcome!
- Supercell !
- Tanius Technology !
- Valve !
- Aras P !
- Asobo Studio !
- FUTO !
- Gravity Well !
- id Software !
- Lucid Games !
- MachineGames !
- Mobigame !
- Planestate Software !
- SCS Software !
- Sebastian Schöner !
- Vector Unit 🆕 👍 Welcome!
❤️ And many individuals ❤️
Thanks to @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!
Changes (since v1.92.0)
This is a general maintenance release addressing some issues discovered in 1.92.0.
Read v1.92.0 Changelog for details and links on main changes.
🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ?
You can read the newly improved docs/BACKENDS.md.
Changes
- Fonts: added
ImFontAtlas::SetFontLoader()to dynamically change font loader at runtime without using internal API. (#8752, #8465) - Fonts: fixed a bug where dynamically changing font loader would lose the Fallback and Ellipsis glyphs under some circumstance. (#8763)
- Fonts: for large size fonts, layout/size calculation only load glyphs metrics. Actual glyphs are renderer+packed when used by drawing functions. (#8758, #8465)
- Fonts: set a maximum font size of 512.0f at ImGui:: API level to reduce edge cases (e.g. out of memory errors).
ImDrawList::API doesn't have the constraint. (#8758) - Fonts: restore
ImFontConfig::FontNobeing a 32-bits value as this is needed to pass full range of information into e.g. FreeType's face_index, as higher bits are used from FreeType 2.6.1. (#8775) [@Valakor] (the field has been erroneously reduced from 32-bits to 8-bit in 1.92.0) - Textures: Fixed support for
#define ImTextureID_Invalidto non-zero value:ImTextureDatawas incorrectly cleared with zeroes. (#8745) [@rachit7645] - Demo: Added
"Text -> Font Size"demo section. (#8738) [@Demonese] - CI: Fixed dllimport/dllexport tests. (#8757) [@AidanSun05]
- CI: Updated to use latest Windows image + VS2022.
- Debug Tools: added
IMGUI_DEBUG_HIGHLIGHT_ALL_ID_CONFLICTSto detect id conflicts before hovering. This is very slow and should only be used temporarily. (#8651, #7961, #7669) - Examples: GLFW+OpenGL3, GLFW+WGPU: Emscripten Makefiles uses GLFW port
contrib.glfw3which offers better HiDPI support. (#8742) [@pthom] - Backends: GLFW, SDL2 made
ImGui_ImplGLFW_GetContentScaleXXX()andImGui_ImplSDL2_GetContentScaleXXXX()helpers return 1.0f on Emscripten and Android platforms, matching macOS logic. (#8742, #8733) [@pthom] - Backends: SDL3: avoid calling
SDL_StartTextInput()again if already active. (fixes e.g.: an issue on iOS where the keyboard animation will popup every time the user types a key + probably other things) (#8727) [@morrazzzz] - Backends: OSX: added
ImGuiMouseCursor_WaitandImGuiMouseCursor_Progressmouse cursor support. (#8739) [@cfillion] - Backends: Allegro5: fixed texture update broken on some platforms where
ALLEGRO_LOCK_WRITEONLYneeded all texels to be rewritten. (#8770) - Backends: Vulkan: use
nonCoherentAtomSizeto align upload_size, fixing validation error on some setups. (#8743, #8744) [@tquante] - Backends: Vulkan: fixed texture synchronization issue introduced in 1.92.0, leading to validation layers being grumpy. (#8772) [@Majora320]
Changes from 1.92.0 to 1.92.1 specific to the Docking+Multi-Viewports branch:
Gallery
From REAC 2025 conference:
https://enginearchitecture.org/2025.htm
In Warhammer 40000: Space Marine 2. talk

In Anvil Rendering Architecture. talk (Assassin's Creed games & more)


Feedback from Ralf:
"Here at @vectorunit I recently converted all of our tools/editors from Qt to imgui and it's been a great quality of life improvement: it has made our tools UI much more readable, maintainable, and easier to add new features."
https://www.vectorunit.com/

@pthom:
Dear ImGui Bundle now runs in the browser, in pure Python. Thanks to Pyodide support (added in v1.92.0), you can now build and run Dear ImGui apps on the Web, using Python only and zero boilerplate: no HTML/CSS/JavaScript, no client-server synchronization issues
An online playground will enable you to run and edit ImGui applications in the browser without any setup.

See relevant annoucement in the Dear ImGui Bundle repository.
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.
❤️ Previous summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
💰 🙏 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.
v1.92.0
v1.92.0: Scaling fonts & many more (big release)
❤️ Previous summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
- BeamNG !
- G3Dvu !
- OTOY !
- Riot Games !
- Scorewarrior !
- Supercell !
- Tanius Technology !
- Valve !
- Aras P !
- Asobo Studio !
- FUTO !
- Gravity Well !
- id Software !
- Lucid Games !
- MachineGames !
- Mobigame !
- Planestate Software !
- SCS Software !
- Sebastian Schöner !
❤️ And many individuals ❤️
Thanks to @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!
TL;DR;
- Added protocol for backends to create, update, destroy textures.
- Fonts may be rendered at any size. Glyphs are loaded and rasterized dynamically. No need to specify ranges, prebake etc. (*)
- Fonts may be added, removed, reconfigured at any time. Easier to e.g. live compare FreeType features. (*)
- Many fonts related changes (but more will come: actually tried to keep those to a minimum for 1.92.0).
- Much easier to pack and manipulate custom data in the dynamic atlas.
- Retina screen rendering works by default (with conforming backend) by updating rasterizer density.
- Updated 13 standard backends to support the new
ImGuiBackendFlags_RendererHasTexturesfeature. - Other stuff: Tree can draw hierarchy outlines. Better Child window resizing. InputText fixes. Tables fixes. Keyboard/Gamepad Nav fixes. Error Handling improvements, Backends improvements/fixes.
- Submitted PR/fixes for various popular extensions such as ImPlot to work fine with this.
(*) with an updated backend.
This is generally "old school" tech but written conscientiously to be highly portable and efficient, to serve the need of real-time internal tooling and to allow a decent transition with the countless codebases and millions lines of code written using Dear ImGui. We still don't support RTL, bi-directional editing, and text shaping.
2025-01-27.font.resize.mp4
(old video but presently I can't be bothered to make a fancier one)
Using a Custom Backend?
🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ?
You can read the newly improved docs/BACKENDS.md.
Here are the main changes done to all backends:
- Allegro5: ee8941e (+35 lines)
- DirectX9: 75efba7 (+48 lines)
- DirectX10: 2d2b1bc (+40 lines)
- DirectX11: 372fd27 (+40 lines)
- DirectX12: eefe5d5 (+87 lines)
- Metal: 26c017d (+55 lines)
- OpenGL Legacy: 0430c55 (+25 lines)
- OpenGL3/WebGL/ES: dbb91a5 (+47 lines)
- SDL_Renderer2: 9fa65cd (+20 lines)
- SDL_Renderer3: e538883 (+19 lines)
- SDL_GPU: 16fe666 (+41 lines)
- Vulkan: abe294b (+33 lines)
- WGPU: 571dae9 (+30 lines)
Changes (since v1.91.9b)
📣 THIS VERSION CONTAINS THE LARGEST AMOUNT OF BREAKING CHANGES SINCE 2015! I TRIED REALLY HARD TO KEEP THEM TO A MINIMUM, REDUCE THE AMOUNT OF INTERFERENCE, BUT INEVITABLY SOME USERS OR THIRD-PARTY EXTENSIONS WILL BE AFFECTED.
📣 IN ORDER TO HELP US IMPROVE THE TRANSITION PROCESS, INCL. DOCUMENTATION AND COMMENTS, PLEASE REPORT ANY DOUBT, CONFUSION, QUESTIONS, YOU CAN SKIM #8465 AND THEN PLEASE OPEN A NEW ISSUE.
📣 If you are using custom widgets, internals or third-party extension that are somehow breaking and aren't obvious how to solve, please post in Issues so we can gather data and share solutions that may help others.
📣 As part of the plan to reduce impact of API breaking changes, several unfinished changes/features/refactors related to font and text systems and scaling will be part of subsequent releases (1.92.1+).
📣 If you are updating from an old version, and expecting a massive or difficult update, consider first updating to 1.91.9 to reduce the amount of changes.
Breaking Changes:
- Fonts: IMPORTANT: if your app was solving the OSX/iOS Retina screen specific logical vs display scale problem by setting
io.DisplayFramebufferScale(e.g. to 2.0f) + settingio.FontGlobalScale(e.g. to 1.0f/2.0f) + loading fonts at scaled sizes (e.g. size X * 2.0f):- This WILL NOT map correctly to the new system! Because font will rasterize as requested size.
- With a legacy backend (< 1.92):
- Instead of setting
io.FontGlobalScale = 1.0f/N, setImFontCfg::RasterizerDensity = N. - This already worked before, but is now pretty much required.
- Instead of setting
- With a new backend (1.92+),
- This should be all automatic.
FramebufferScaleis automatically used to set current fontRasterizerDensity.FramebufferScaleis a per-viewport property provided by backend through thePlatform_GetWindowFramebufferScale()handler in 'docking' branch.
- Fonts: IMPORTANT on Font Sizing:
- Before 1.92, fonts were of a single size. They can now be dynamically sized.
PushFont()API now has a REQUIRED size parameter.
void PushFont(ImFont* font)-->void PushFont(ImFont* font, float size)PushFont(font, 0.0f) // Change font and keep current sizePushFont(NULL, 20.0f) // Keep font and change current sizePushFont(font, 20.0f) // Change font and set size to 20.0fPushFont(font, style.FontSizeBase * 2.0f) // Change font and set size to be twice bigger than current size.PushFont(font, font->LegacySize) // Change font and set size to size passed to AddFontXXX() function. Same as pre-1.92 behavior, for fixed size fonts.
- To use old behavior use
ImGui::PushFont(font, font->LegacySize)at call site. We intentionally didn't add a default parameter because it would make the long-term transition more difficult. - Kept inline redirection font. Will obsolete.
- Global scale factors may be applied over the provided size. This is why it is called
FontSizeBasein the style structure. - Global scale factors are:
style.FontScaleMain,style.FontScaleDpiand maybe more. ImFont::FontSizewas removed and does not make sense anymore.ImFont::LegacySizeis the size passed toAddFont().- Removed support for old
PushFont(NULL)which was a shortcut for "revert to default font". - Renamed/moved
io.FontGlobalScaletostyle.FontScaleMain.
- Fonts: IMPORTANT on Font Merging:
- When searching for a glyph in multiple merged fonts: font inputs are now scanned in order for the first font input which the desired glyph. This is technically a different behavior than before!
- e.g. If you are merging fonts you may have glyphs that you expected to load from Font Source 2 which exists in Font Source 1. After the update and when using a new backend, those glyphs may now loaded from Font Source 1!
- You can use
Metrics/Debugger->Fonts->Font->Input Glyphs Overlap Detection Toolto see list of glyphs available in multiple font sources. This can facilitate understanding which font input is providing which glyph. - You can use
ImFontConfig::GlyphExcludeRanges[]to specify ranges to ignore in given Input:
// Add Font Source 1 but ignore ICON_MIN_FA..ICON_MAX_FA range
static ImWchar exclude_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
ImFontConfig cfg1;
cfg1.GlyphExcludeRanges = exclude_ranges;
io.Fonts->AddFontFromFileTTF("segoeui.ttf", 0.0f, &cfg1);
// Add Font Source 2, which expects to use the range above
ImFontConfig cfg2;
cfg2.MergeMode = true;
io.Fonts->AddFontFromFileTTF("FontAwesome4.ttf", 0.0f, &cfg2);- Textures:
...
v1.91.9b
v1.91.9b: hotfix
1.91.9 has an assert/crashing bug related to loading table settings in certain instances.
Changes (since v1.91.9)
- Tables: Fixed assert when loading .ini settings with reordered columns. (#8496, #7934)
- Tables: Fixed issues when loading .ini settings for a table with columns using
ImGuiTableColumnFlags_DefaultHideorImGuiTableColumnFlags_DefaultSort. (#8496, #7934)
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.
❤️ Last summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
💰 🙏 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.
v1.91.9
v1.91.9
❤️ Last summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ 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
- Bindings & 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 recent years sponsors ❤️
- Adobe !
- Aras P !
- G3Dvu !
- FUTO !
- Gravity Well !
- id Software !
- Lucid Games !
- MachineGames !
- Mobigame !
- Planestate Software !
- OTOY !
- SCS Software !
- Sebastian Schöner !
- Scorewarrior !
- Supercell !
- Tanius Technology !
- Valve !
❤️ And many individuals ❤️
Thanks to @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!
Changes (since v1.91.8)
Breaking Changes:
- Image: removed
tint_colandborder_colparameter fromImage()function. (#8131, #8238)- Old function signature:
void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 tint_col = (1,1,1,1), ImVec4 border_col = (0,0,0,0)); - New function signatures:
void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1));
void ImageWithBg(ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 bg_col = (0,0,0,0), ImVec4 tint_col = (1,1,1,1)); - TL;DR:
border_colhad misleading side-effect on layout,bg_colwas missing, parameter order couldn't be consistent withImageButton(). - New behavior always use
ImGuiCol_Bordercolor +style.ImageBorderSize/ImGuiStyleVar_ImageBorderSize. - Old behavior altered border size (and therefore layout) based on border color's alpha, which caused variety of problems.
- Old behavior used a fixed value of 1.0f for border size which was not tweakable.
- Kept legacy signature (will obsolete), which mimics the old behavior, but uses
Max(1.0f, style.ImageBorderSize)whenborder_colis specified. - Added
ImageWithBg()function which has bothbg_col(which was missing and most useful) andtint_col. It was impossible to addbg_colto Image() with a parameter order consistent with other functions, so we decided to removetint_coland introduceImageWithBg().
- Old function signature:
- Renamed
ImFontConfig::GlyphExtraSpacing.xoption toGlyphExtraAdvanceX. (#242) - Renamed
style.TabMinWidthForCloseButtontostyle.TabCloseButtonMinWidthUnselected. - Backends: Vulkan: Added
uint32_t api_versionargument toImGui_ImplVulkan_LoadFunctions(). Note that it was also added toImGui_ImplVulkan_InitInfo()but for the later it is optional. (#8326, #8365, #8400) - Internals: Fonts: ImFontAtlas::ConfigData[] has been renamed to ImFontAtlas::Sources[],
- Internals: Fonts: ImFont::ConfigData[], ConfigDataCount has been renamed to Sources[], SourcesCount.
- Internals: Menus: reworked mangling of menu windows to use
"###Menu_00"etc. instead of"##Menu_00", allowing them to also store the menu name before it. This shouldn't affect code unless directly accessing menu window from their mangled name.
Other changes:
- Fixed
IsItemDeactivatedAfterEdit()signal being broken forCheckbox(),RadioButton(),Selectable(). Regression from 2025/01/13. (#8370) - Windows: Fixed an issue where
BeginChild()inside a collapsedBegin()wouldn't inherit theSkipItemsflag, resulting in missing coarse clipping opportunities for code not checking theBeginChild()return value. - Windows, Style: Added
style.WindowBorderHoverPaddingsetting to configure inner/outer padding applied to hit-testing of windows borders and detection of hovered window. - InputText: Allow CTRL+Shift+Z to redo even outside of OSX. (#8389) [@tanksdude]
- InputText: Pasting a multi-line buffer into a single-line edit replaces carriage return by spaces. (#8459)
- InputTextWithHint(): Fixed buffer-overflow (luckily often with no visible effect) when a user callback modified the buffer contents in a way that altered the visibility of the preview/hint buffer. (#8368) [@m9710797, @ocornut]
- Scrollbar: Rework logic that fades-out scrollbar when it becomes too small, which amusingly made it disappear when using very big font/frame size.
- Scrollbar: Automatically stabilize ScrollbarX visibility when detecting a feedback loop manifesting with ScrollbarX visibility toggling on and off repeatedly. (#8488, #3285, #4539) (feedback loops of this sort can manifest in various situations, but combining horizontal + vertical scrollbar + using a clipper with varying width items is one frequent cause. The better solution is to, either: (1) enforce visibility by using
ImGuiWindowFlags_AlwaysHorizontalScrollbaror (2) declare stable contents width withSetNextWindowContentSize(), if you can compute it.) - Tables: fixed calling
SetNextWindowScroll()on clipped scrolling table to not leak the value into a subsequent window. (#8196) - Tables: fixed an issue where Columns Visible/Width state wouldn't be correctly restored when hot-reloading .ini state. (#7934)
- Tables: tamed some .ini settings optimizations to more accurately allow overwriting/hot-reloading settings in more situations. (#7934)
- Tables, Error Handling: Recovery from invalid index in
TableSetColumnIndex(). (#1651) - Image: Added
ImageWithBg()variant with bg color and tint color. (#8131, #8238) - Image, Style: Added
style.ImageBorderSize,ImGuiStyleVar_ImageBorderSize. (#8131, #8238) - Selectable: Fixed horizontal label alignment with
SelectableTextAlign.x > 0.0fand specifying a selectable size. (#8338) - Tabs, Style: made the Close Button of selected tabs always visible by default, without requiring to hover the tab. (#8387)
- Added
style.TabCloseButtonMinWidthSelected/TabCloseButtonMinWidthUnselectedsettings to configure visibility of the Close Button for selected and unselected tabs. (-1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width) - Default for selected tabs:
TabCloseButtonMinWidthSelected == -1.0f(always visible) - Default for unselected tabs:
TabCloseButtonMinWidthUnselected == 0.0f(visible when hovered)
- Added
- Tabs: fixed middle-mouse-button to close tab not checking that close button is hovered, merely its visibility. (#8399, #8387) [@nicovanbentum]
- TextLink(), TextLinkOpenURL(): fixed honoring text baseline alignment. (#8451, #7660) [@achabense]
- TextLinkOpenURL(): fixed default Win32
io.PlatformOpenInShellFnhandler to handle UTF-8 regardless of system regional settings. (#7660) [@achabense] - Disabled: Fixed an issue restoring Alpha in
EndDisabled()when using nestedBeginDisabled()calls withPushStyleVar(ImGuiStyleVar_DisabledAlpha)within. (#8454, #7640) - Clipper: Fixed an issue where passing an out of bound index to
clipper.IncludeItemByIndex()could incorrectly offset the final cursor, even if that index was not iterated through. One case where it would manifest was calling Combo() with an out of range index. (#8450) - Debug Tools: Added
io.ConfigDebugHighlightIdConflictsShowItemPicker(defaults to true) to allow disabled Item Picker suggestion in user facing builds. (#7961, #7669) - Debug Tools: Tweaked layout of ID Stack Tool and always display full path. (#4631)
- Misc: Various zealous warning fixes for newer version of Clang.
- Misc: Added
ImGuiMouseCursor_WaitandImGuiMouseCursor_Progressmouse cursors (busy/wait/hourglass shape, with or without an arrow cursor). - Demo: Reorganized "Widgets" section to be alphabetically ordered and split in more functions.
- Demo: Combos: demonstrate a very simple way to add a filter to a combo, by showing the filter inside the combo contents. (#718)
- Examples: SDL3: Added comments to clarify setup for users of the unfortunate
SDL_MAIN_USE_CALLBACKSfeature. (#8455) - IO: Added
ImGuiKey_Oem102to ImGuiKey enum. (#7136, #7201, #7206, #7306, #8468) - Backends: reworked key handlers to use/prioritize untranslated ...
v1.91.8
v1.91.8
❤️ Last summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe 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
- Bindings & 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 recently joining sponsors: MachineGames, id Software!, SCS Software! ! ! ❤️
❤️ Thanks to our sponsors incl Supercell! Valve!, G3Dvu! OTOY! Adobe! Lucid Games! Planestate Software! Aras P! Gravity Well! FUTO! & many individuals ❤️
Thanks to @GamingMinds-DanielC, @PathogenDavid & more for their help with github answers!
Recently released third-party extensions include:
-
ImOGuizmo by @fknfilewalker: a simple C++11 header only interactive orientation gizmo: github/fknfilewalker/imoguizmo

-
ImPlot3d by @brenocq https://github.com/brenocq/implot3d
ImPlot3D is an extension of Dear ImGui for easy-to-use 3D plotting. Inspired by ImPlot, it supports lines, scatter, surfaces, meshes, and more, with interactive controls like rotation, zoom, and pan.
See more extensions in our wiki page Useful Extensions.
Changes (since v1.91.7)
Breaking Changes:
- ColorEdit, ColorPicker: redesigned how alpha is displayed in the preview square. (#8335, #1578, #346)
- Removed
ImGuiColorEditFlags_AlphaPreview(made value 0): it is now the default behavior. - Prior to 1.91.8: alpha was made opaque in the preview by default unless using
ImGuiColorEditFlags_AlphaPreview. - We now display the preview as transparent by default. You can use
ImGuiColorEditFlags_AlphaOpaqueto use old behavior. - The new flags may be combined better and allow finer controls:
ImGuiColorEditFlags_AlphaOpaque: disable alpha in the preview, but alpha value still editable.ImGuiColorEditFlags_AlphaNoBg: disable rendering a checkerboard background behind transparent color.ImGuiColorEditFlags_AlphaPreviewHalf: display half opaque / half transparent preview.
- Removed
- Backends: SDLGPU3: Renamed
ImGui_ImplSDLGPU3_InitInfo::GpuDevicetoDevicefor consistency. (#8163, #7998, #7988)
Other changes:
- imgui_freetype: fixed issue where glyph advances would incorrectly be snapped to pixels. Effectively it would only be noticeable when hinting is disabled with
ImGuiFreeTypeBuilderFlags_NoHinting, as hinting itself snaps glyph advances. - Inputs: added
IsMouseReleasedWithDelay()helper. (#8337, #8320). Use if you absolutely need to distinguish single-click from double-clicks by introducing a delay. This is a very rarely used UI idiom, but some apps use this: e.g. MS Explorer single-click on an icon triggers a rename. Generally use withdelay >= io.MouseDoubleClickTime+ combine with aGetMouseClickedCount() == 1check. - Windows: legacy
SetWindowFontScale()is properly inherited by nested child windows. Note that an upcoming major release should make this obsolete, but in the meanwhile it works better now. (#2701, #8138, #1018) - Windows, Style: Fixed small rendering issues with menu bar, resize grip and scrollbar when using thick border sizes. (#8267, #7887)
- Windows: Fixed
IsItemXXXX()functions not working on append-version ofEndChild(). (#8350) Also made some of the fields accessible afterBeginChild()to matchBegin()logic. - Error Handling: Recovery from missing
EndMenuBar()call. (#1651) - Tables, Menus: Fixed using
BeginTable()in menu layer (any menu bar). (#8355) It previously overrode the current layer back to main layer, which caused an issue with MainMenuBar attempted to release focus when leaving the menu layer. - Tables, Menus: Fixed tables or child windows submitted inside
BeginMainMenuBar()being unable to save their settings, as the main menu bar usesImGuiWindowFlags_NoSavedSettings. (#8356) - ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (#8336, #8241). [@PathogenDavid]
- Tabs, Style: reworked selected overline rendering to better accommodate for rounded tabs. Reduced default thickness (
style.TabBarOverlineSize), increased default rounding (style.TabRounding). (#8334) [@Kian738, @ocornut] - Debug Tools: Tweaked font preview.
- ImDrawList: texture baked storage for thick line reduced from ~64x64 to ~32x32. (#3245)
- Fonts:
IndexLookup[]table hold 16-bit values even in ImWchar32 mode, as it accounts for number of glyphs in same font. This is favorable toCalcTextSize()calls touching less memory. - Fonts:
OversampleH/OversampleVdefaults to 0 for automatic selection.OversampleH == 0--> use 1 or 2 depending on font size and use of PixelSnapH.OversampleV == 0--> always use 1.
- ImFontAtlas: made calling
ClearFonts()callClearInputData(), as calling one without the other is never correct. (#8174, #6556, #6336, #4723) - Examples: DirectX12: Reduced number of frame in flight from 3 to 2 in provided example, to reduce latency.
- Examples: Vulkan: better handle
VK_SUBOPTIMAL_KHRbeing returned byvkAcquireNextImageKHR()orvkQueuePresentKHR(). (#7825, #7831) [@NostraMagister] - Backends: SDL2: removed assert preventing using
ImGui_ImplSDL2_SetGamepadMode()withImGui_ImplSDL2_GamepadMode_Manualand an empty array. (#8329) - Backends: SDL3: removed assert preventing using
ImGui_ImplSDL3_SetGamepadMode()withImGui_ImplSDL3_GamepadMode_Manualand an empty array. (#8329) - Backends: SDLGPU3: Exposed
ImGui_ImplSDLGPU3_CreateDeviceObjects()/_DestroyDeviceObjects().
Removed return value fromImGui_ImplSDLGPU3_CreateFontsTexture(). (#8163, #7998, #7988) - Backends: SDL_Renderer2/3: Use endian-dependent RGBA32 texture format, to match
SDL_Color. (#8327) [@dkosmari] - Backends: DirectX12: Texture upload use the command queue provided in
ImGui_ImplDX12_InitInfoinstead of creating its own. - Backends: OSX: Removed notification observer when shutting down. (#8331) [@jrachele]
Changes from 1.91.7 to 1.91.8 specific to the Docking+Multi-Viewports branch:
- Docking: Fixed an issue in 1.91.7 where using legacy
ImGuiWindowFlags_NavFlattenedflag (instead ofImGuiChildFlags_NavFlattened) in docking branch would conflict with internal docking flags. (#8357) [@DanielGibson] - Backends: SDL3: new viewport windows are created with the
SDL_WINDOW_HIDDENflag before callingSDL_ShowWindow(). (#8328) [@PathogenDavid]
Gallery
"Autonomous dry stone: On-site planning and assembly of stone walls with a robotic excavator"
https://www.researchgate.net/publication/345902778_Autonomous_dry_stone_On-site_planning_and_assembly_of_stone_walls_with_a_robotic_excavator
"Screen capture of geometric planning software. a Imgui Interface, b active environment with search space, solutions, and placed stones, c available scanned stones in inventory, d selected stone viewer with VSA faces"
@CosmoCortney: _"3D Mini Maps in my game enhancement tool, ...
v1.91.7
1.91.7: happy new year!
❤️ Last summer was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
✋ Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe 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
- Bindings & 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 recently joining sponsors: id Software!, Valve!, SCS Software! ! Gravity Well! ❤️
❤️ Thanks to other present and past sponsors incl Supercell! BeamNG! OTOY! Arkane Lyon, Asobo Studio, Lucid Games! Asobo! G3Dvu! Planestate Software! Aras P! FUTO! & many individuals ❤️
Thanks to @GamingMinds-DanielC, @PathogenDavid & more for their help with github answers!
New third-party extension!
-
ImOGuizmo by @fknfilewalker: a simple C++11 header only interactive orientation gizmo: github/fknfilewalker/imoguizmo

-
ImPlot3d by @brenocq https://github.com/brenocq/implot3d
ImPlot3D is an extension of Dear ImGui for easy-to-use 3D plotting. Inspired by ImPlot, it supports lines, scatter, surfaces, meshes, and more, with interactive controls like rotation, zoom, and pan.
See more extensions in our wiki page Useful Extensions.
Changes (since v1.91.6)
Breaking Changes:
- TreeNode: renamed
ImGuiTreeNodeFlags_SpanTextWidthtoImGuiTreeNodeFlags_SpanLabelWidthfor consistency with other names. Kept redirection enum (will obsolete). (#6937)
Other changes:
- Fixed issues with
IsItemDeactivated()andIsItemDeactivatedAfterEdit()not emitting a reliable signal when an item is deactivated externally: e.g. via an explicit clear of focus, clear of active id, opening of modal etc. (#5184, #5904, #6766, #8303, #8004)- It used to work when the interruption happened in the frame before the active item as submitted, but not after. It should work in both cases now.
- While this is not specific to a certain widgets, typically it would mostly be noticeable on
InputText()because it keepsActiveIdfor a longer time while allowing other interaction to happen.
- Error Handling: Fixed bugs recovering from within a table that created a child window, and from nested child windows. (#1651)
- Error Handling: Turned common
EndTable()and otherTableXXXfunctions fail cases into a recoverable error. (#1651, #8314) - Error Handling: Exposed basic error handling options in
Demo->Tools->Debug Options. (#1651) - InputText: Fixed a bug where character replacements performed from a callback were not applied when pasting from clipboard. (#8229)
- InputText: Fixed issue when activating a ReadOnly field when the underlying value is being modified. (#8242)
- InputText: Added sanity check to detect some cases of passing a non zero-terminated input buffer.
- InputText: Fixed not calling CallbackEdit on revert/clear with Escape key, although
IsItemEdited()was behaving correctly. (#8273) - Tables: Fixed
TableAngledHeadersRow()creating an infinite horizontal scrolling region when the table is hosted in a viewport with negative coordinates (left of primary monitor, with multi-viewports enabled). - Tables, MultiSelect: Fixed an issue where column width may be miss-measured when calling
BeginMultiSelect()while inside a table. (#8250) - TreeNode, Tables: Added
ImGuiTreeNodeFlags_LabelSpanAllColumnsto make the label (not only the highlight/frame) also spans all columns. This is useful for table rows where you know nothing else is submitted. (#8318, #3565) (Obviously best used withImGuiTableFlags_NoBordersInBodyUntilResize). - Drags: Added
ImGuiSliderFlags_NoSpeedTweaksflag to disable keyboard modifiers altering the tweak speed. Useful if you want to alter tweak speed yourself based on your own logic. (#8223) - Nav: Fixed an issue where Alt key would clear current active item on windows with the
ImGuiWindowFlags_NoNavInputsflag. (#8231) - Debug Tools: Debug Log: hovering
0xXXXXXXXXvalues in log is allowed even if a popup is blocking mouse access to the debug log window. (#5855) - Debug Tools: Item Picker: Always available in Tools menu regardless of value of
io.ConfigDebugIsDebuggerPresent. (#2673) - Fonts: Fixed miscalculation of Ellipsis ("...") character width when automatically created from a single comma character, affecting some fonts/settings (not all).
- Demo: Added label edition to Property Editor demo + fix an ID issue. (#8266) [@moritz-h]
- Misc: Fixed misc/cpp/imgui_stdlib.h/.cpp not supporting
#define IMGUI_DISABLE. (#8294) [@juur] - Misc: Fixed MinGW builds not using UTF-8 friendly
_wfopen(). (#8300) - Backends: SDL_GPU for SDL3: Added backend for SDL_GPU! (#8163, #7998, #7988) [@DeltaW0x].
- Backends: SDL3: Added
ImGui_ImplSDL3_InitForSDLGPU()for consistency, even though it is currently not doing anything particular. (#8163, #7998, #7988) - Backends: Allegro5: Avoid calling
al_set_mouse_cursor()repeatedly since it appears to leak on on X11 (#8256). [@Helodity] - Backends: Metal: Fixed leaks when using metal-cpp. (#8276, #8166) [@selimsandal]
- Backends: Metal: Fixed resource leak when using multiple contexts. (#7419) [@anszom]
- Backends: Vulkan: Fixed setting
VkSwapchainCreateInfoKHR::preTransformfor platforms not supportingVK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR. (#8222) [@Zer0xFF] - Backends: Vulkan: Added a few more
ImGui_ImplVulkanH_XXXhelper functions primarily for the purpose of making our examples simpler. - Backends: Vulkan: Added
IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZEto clarify how many image sampler descriptors are expected to be available in the provided descriptor pool. Current backend needs 1 but it is expected that by end of Q1 2025 this number will grow (will stay a small number). (#6642) - Backends: DX11: Expose vertex constant buffer in
ImGui_ImplDX11_RenderState.
Reset projection matrix inImDrawCallback_ResetRenderStatehandlers. (#6969, #5834, #7468, #3590) - Backends: DX10: Expose
ImGui_ImplDX10_RenderStatefor completeness. (#6969, #5834, #7468, #3590) - Examples: Added Win32+Vulkan example for completeness. (#8180) [@jristic]
Gallery
@axjxwright: "AX Tracker: Custom tracking software for an upcoming large scale museum installation."
o3.mp4
@ItsBranK: "Been working on a reflection system helper for Unreal Engine for a bit, lets you view games objects and lets you modify their properties in real time. Very helpful for debugging issues in the production version of your game, where having access to the editor is not possible. This is just for personal use and not open to the public."

@daedlock: "binutils"

@bcace: "short video of mechanical engineering software in early stages of development"
AirFrame.2024.11.26.22.02.47.D0APbFicf1Y.mp4
@ima...







