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_usage
argument. It was previously hardcoded toVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
and 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_ResizeX
andImGuiChildFlags_ResizeY
flags. (#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
BufTextLen
before 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_WantDestroy
by 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
/EndFrame
scope. 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_WantCreate
status again. (#8811) - Fixed an issue preventing multi-contexts sharing a
ImFontAtlas
from being possible to destroy in any order. - Fixed not updating
ImTextureData
'sRefCount
when 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
dwPacketNumber
has not changed. (#8556) [@MidTerm-CN] - Vulkan: added a way to specify custom shaders by filling init fields
CustomShaderVertCreateInfo
andCustomShaderFragCreateInfo
. (#8585, #8271) [@johan0A] - DX9,DX10,DX11,DX12,Metal,Vulkan,WGPU,SDLRenderer2,SDLRenderer3: ensure that a texture in
ImTextureStatus_WantDestroy
state 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 specific to the Docking+Multi-Viewports branch:
- Nav, Docking, Selection: Fixed tab change from reinitializing navigation state, which would erroneously clear selection when using
ImGuiSelectableFlags_SelectOnNav
or clear multi-selection when not usingImGuiMultiSelectFlags_NoAutoSelect
. (#8997) - Nav: Fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused (the fix done in 1.92.3 was incomplete for docking branch).
- Viewports:
- Added
ImGuiBackendFlags_HasParentViewport
backend flag for backend to specify if it can honor theviewport->ParentViewport
/viewport->ParentViewportId
value by applying the corresponding parent/child relation at the Platform level. (#8948)- SDL3, Win32 backends: supported.
- SDL2, GLFW, OSX backends: unsupported.
- Fixed a bug where
ImGuiWindowFlags_NoBringToFrontOnFocus
would effectively be ignored when windows first appear and viewports are enabled. (#7008) [@jshofmann] - Changed default value of
io.ConfigViewportsNoDefaultParent
totrue
. (#8948) - Fixed an issue inferring Z-order when attempting to merge a viewport back in the the main/hosting viewport. (#8948)
Note that for GLFW/SDL2/OSX backends, which do not support honoringParentViewportID
. Settingio.ConfigViewportsNoDefaultParent=true
will align imgui's expectation with what the backend does. - Storing
ImGuiViewport* ParentViewport
pointer along withParentViewportID
. ImGui::DestroyContext()
does not callDestroyPlatformWindows()
anymore at it is assumed to be unnecessary as backends should have done it and we check that backends have been shutdown since 1.90.4. Changed into asserts. (#7175, #8945)
- Added
- Backends:
- DirectX10, DirectX11, DirectX12: Disabled DXGI's Alt+Enter default behavior on secondary viewports managed by the backend. (#4350) [@PathogenDavid]
- DirectX10, DirectX11: avoid
ImGui_ImplXXXX_SwapBuffers()
handlers for secondary viewports crashing if SwapChain could not be created. - Vulkan: Added a way to configure secondary viewport pipeline creation by setting
init_info.PipelineInfoForViewports
fields. (#8946, #8110, #8111, #8686) - Vulkan: Added a way to configure secondary viewport swapchain's
VkImageUsageFlags
to e.g. capture rendering. (#8946, #8940) [@olivier-gerard, @ocornut]- Usage example:
init_info.PipelineInfoForViewports.SwapChainImageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
- Usage example:
- Vulkan: pipeline created for secondary viewport automatically match surface format. (#8686) [@sylmroz]
- Vulkan: Added
ImGui_ImplVulkanH_GetWindowDataFromViewport()
accessor/helper. (#8946, #8940) [@olivier-gerard]
- Docs: improve docking API comments and demo. (#9000)
- Examples: DX10, DX11: Disabled DXGI's Alt+Enter default behavior in examples. Applications are free to leave this enabled, but it does not work properly with multiple viewports. (#4350) [@PathogenDavid]
Gallery
@ongamex: "Here is some WIP of the modelling tools I make for my engine."
house_modelling.mp4
@DaddelZeit: "IMGUI as Lua extension in BeamNG.drive using Cpp/Lua binding, for a graphics mod."

@known81331: "osx port of wallpaper engine, along with a drop of liquid glass"

Marlin (3-D Printing Firmware) simulator
https://marlinfw.org, https://bsky.app/profile/marlinfw.org/post/3lzwlubcm2s2c
Marlin.Firmware.Simulator.mp4
Havok 2025.1's new Visual Debugger
https://www.havok.com/blog/havok-2025-1-release-highlights/

https://www.havok.com/blog/havok-2025-1-release-highlights/
@pthom "Fiatlight automates UI generation for functions and structured data, making prototyping faster and easier, for Python."
"See full demo video or intro tutorial"

https://corepto.io/
"Proofread MusicXML scores using 100+ editorial rules. Identify and resolve issues directly in your browser, or bookmark them for later review. Customize each check to suit your needs. Monitor your progress with our commit system."
...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.
❤️ Last year 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.