github ocornut/imgui v1.92.4

latest release: v1.92.4-docking
one day ago

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..

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!

And usual supporters:

❤️ 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 by ImGui_ImplVulkan_CreateMainPipeline() so it should not affect many users). (#8110, #8111)
    • Vulkan: helper ImGui_ImplVulkanH_CreateOrResizeWindow() added a VkImageUsageFlags image_usage argument. It was previously hardcoded to VK_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)

Other Changes

  • Windows: added lower-right resize grip on child windows using both ImGuiChildFlags_ResizeX and ImGuiChildFlags_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 using ImGuiWindowFlags_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) with ImGuiInputFlags_RouteOverActive, allowing to steal shortcuts from active item without using global routing. (#9004)
  • 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 calling InsertChars().
      (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)
  • 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 calling ImGui_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 a ImTextureStatus_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's RefCount when destroying a context using a shared ImFontAtlas, leading standard backends to not properly free texture resources. (#8975) [@icrashstuff]
  • 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() and ClearRendererHandlers() 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.
      • Fix mouse coordinates issue in fullscreen apps with macOS notch. (#7919, #7786)
        • Essentially a workaround for SDL3 bug which will be fixed in SDL 3.3.0.
      • Better perf on X11 as querying global position requires a round trip to X11 server.
    • 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 and CustomShaderFragCreateInfo. (#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)
  • Examples:
    • SDL2+DirectX11: Try WARP software driver if hardware driver is not available. (#5924, #5562)
    • SDL3+DirectX11: Added SDL3+DirectX11 example. (#8956, #8957) [@tomaz82]
    • Win32+DirectX12: Rework synchronization logic. (#8961) [@RT2Code]
    • Made examples's main.cpp consistent with returning 1 on error.

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 using ImGuiMultiSelectFlags_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 the viewport->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 to true. (#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 honoring ParentViewportID. Setting io.ConfigViewportsNoDefaultParent=true will align imgui's expectation with what the backend does.
    • Storing ImGuiViewport* ParentViewport pointer along with ParentViewportID.
    • ImGui::DestroyContext() does not call DestroyPlatformWindows() 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)
  • 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;
    • 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."

Image

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

Image

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/

Image

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"

Image

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."

Image

...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.

Don't miss a new imgui release

NewReleases is sending notifications on new releases.