Dear ImGui 1.90.5

Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline-enabled application. It is fast, portable, renderer agnostic, and self-contained (no external dependencies). Dear ImGui is designed to enable fast iterations and to empower programmers to create content creation tools and visualization / debug tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal and lacks certain features commonly found in more high-level libraries. Dear ImGui is particularly suited to integration in game engines (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on console platforms where operating system features are non-standard. Minimize state synchronization. Minimize UI-related state storage on user side. Minimize setup and maintenance. Easy to use to create dynamic UI which are the reflection of a dynamic data set. Easy to use to create code-driven and data-driven tools. Easy to use to create ad hoc short-lived tools and long-lived, more elaborate tools. Easy to hack and improve. Portable, minimize dependencies, run on target (consoles, phones, etc.). Efficient runtime and memory consumption. Battle-tested, used by many major actors in the game industry.

Tags game ui gui api gamedev library framework game-engine game-development toolkit cpp c
License MITL
State alpha

Recent Releases

1.90.512 Apr 2024 11:45 minor feature: Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.5 Breaking changes: More formally obsoleted GetKeyIndex() when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is set. It has been unnecessary and a no-op since 1.87 (it returns the same value as passed when used with a 1.87+ backend using io.AddKeyEvent() function).. - IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) -- IsKeyPressed(ImGuiKey_XXX). ImDrawList: Merged the radius_x/radius_y parameters in AddEllipse(), AddEllipseFilled() and PathEllipticalArcTo() into a single ImVec2 parameter. Exceptionally, because those functions were added recently in 1.90, we are not adding inline redirection functions. The transition is easy and should affect few users. @cfillion . Other changes: Windows: Scrollbar visibility decision uses current size when both size and contents size are submitted by API.. Windows: Double-click to collapse may be disabled via key-ownership mechanism.. Windows: BeginChild(): Extend outer resize borders to the edges when there are no corner grips. Essentially affects resizable child windows. @cfillion . Windows: BeginChild(): Resizing logic for child windows evaluates whether per-axis clamping should be applied based on parent scrollbars, not child scrollbars. @cfillion Adjust those resizing limits to match window padding rather than inner clipping rectangle. Tables: auto-width columns when using synced-instances of same table, width of one instance would bleed into next one instead of sharing their widths.. Tables: Angled headers: border hit box extending beyond when used within non-scrollable tables. @cfillion . Tables: Angled headers: borders not moving back up after TableAngleHeadersRow() stops being called. @cfillion . Tables: Angled headers: rounding header size to nearest integers, some when using clipper. Menus, Popups: an where sibling menu popups re-opening in successive frames would erroneously the window. While it is technically a popup it woul
1.90.424 Feb 2024 03:05 minor bugfix: Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.4 Other changes: Nav: SetKeyboardFocusHere() or programmatic tabbing API from not working on windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which among other things broke imgui_memory_editor). Menus, Popups: an where hovering a parent-menu upward would erroneously the window.. Popups: resizable popup minimum size being too small. Standardized minimum size logic. Modals: Temporary changes of ImGuiCol_ModalWindowDimBg are properly handled by BeginPopupModal().. Tables: Angled headers: support for multi-line labels.. Tables: Angled headers: various to accurately handle CellPadding changes.. Tables: Angled headers: properly registers horizontal component of angled headers for auto-resizing of columns.. Tables: Angled headers: TableAngledHeadersRow() incorrect background fill drawn too low, particularly visible with tables that have no scrolling.. ProgressBar: a minor tesselation when rendering rounded progress bars, where in some situations the rounded section wouldn't follow regular tesselation rules. DeTools: Item Picker: Promoted ImGui::DetartItemPicker() to public API.. DeTools: Item Picker: Menu entry visible in Demo- Tools but greyed out unless io.ConfigDeIsDegerPresent is set.. Misc: Added optional alpha multiplier parameter to GetColorU32(ImU32) variant. Demo: Custom Rendering: better demonstrate PathArcTo(), PathBezierQuadraticCurveTo(), PathBezierCubicCurveTo(), PathStroke(), PathFillConvex() functions. .
1.90.315 Feb 2024 19:05 minor feature: Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.3 Breaking changes: Backends: SDL2: Removed obsolete ImGui_ImplSDL2_NewFrame(SDL_Window*) signature which was obsoleted in 1.84. Calling ImGui_ImplSDL2_NewFrame() is fine. Backends: Vulkan: Moved RenderPass parameter from ImGui_ImplVulkan_Init() function to ImGui_ImplVulkan_InitInfo structure. Not required when using dynamic rendering. @shawnhatori . Backends: Vulkan: Using dynamic rendering now require filling the PipelineRenderingCreateInfo structure in ImGui_ImplVulkan_InitInfo, allowing to configure color/depth/stencil formats. Removed ColorAttachmentFormat field previously provided for dynamic rendering. @shawnhatori . Other changes: Menus, Popups: menus and popups with ChildWindow flag erroneously not displaying a scrollbar when contents is over parent viewport size. @ZingBallyhoo . Backends: SDL2, SDL3: Handle gamepad disconnection + increasing gamepad reference counter continuously. Added support for multiple simultaneous gamepads. Added ImGui_ImplSDL2_SetGamepadMode()) function to select whether to automatically pick first available gamepad, all gamepads, or specific gamepads. @ocornut, @lethal-guitar, @wn2000, @bog-dan-ro . BackendsL SDL3: gamepad handling. @bog-dan-ro . Backends: SDLRenderer3: query newly added SDL_RenderViewportSet() to not restore a wrong viewport if none was initially set. Backends: DirectX9: Using RGBA format when allowed by the driver to avoid CPU side conversion. @Demonese . Internals: ImFileOpen not working before context is created, preventing creation of a font atlas before main context creation. @PathogenDavid, @ocornut . .
1.90.210 Feb 2024 00:03 major bugfix: Breaking changes: - Commented out ImGuiIO::ImeWindowHandle obsoleted in 1.87 in favor of writing to 'void* ImGuiViewport::PlatformHandleRaw'. - Backends: WebGPU: ImGui_ImplWGPU_Init() now takes a ImGui_ImplWGPU_InitInfo structure instead of variety of parameters, allowing for easier further changes. (#7240) Other changes: - Nav: keyboard/gamepad activation mark widgets as held to give better visual feedback. - Nav: tweak to logic marking navigated item as hovered when using keyboard, allowing the hover highlight to stay even while another item is activated. - Nav: Fixed SetKeyboardFocusHere() not working when current nav focus is in different scope, regression from 1.90.1 related to code scoping Tab presses to local scope. (#7226) @bratpilz - Nav: Fixed pressing Escape while in a child window with _NavFlattened flag. (#7237) - Nav: Improve handling of Alt key to toggle menu so that key ownership may be claimed on individual left/right alt key without interfering with the other. - Nav, Menus: Fixed click on a BeginMenu() followed by right-arrow from making the child menu reopen and flicker (using ImGuiPopupFlags_NoReopen). - Nav: ImGuiWindowFlags_NoNavInputs is tested during scoring so NavFlattened windows can use it. - Popups: OpenPopup(): added ImGuiPopupFlags_NoReopen flag to specifically not close and reopen a popup when it is already open. (#1497, #1533) (Note that this differs from specific handling we already have in place for the case of calling OpenPopup() repeatedly every frame: we already didn't reopen in that specific situation, otherwise the effect would be very disastrous in term of confusion, as reopening would steal focus). - Popups: Slight change to popup closing logic (e.g. after focusing another window) which skipped over popups that are also child windows. - Combo: Fixed not reusing windows optimally when used inside a popup stack. - Debug Tools: Metrics: Fixed debug break in SetShortcutRouting() not handling ImGuiMod_Sh