github ocornut/imgui v1.90

latest releases: v1.91.5-docking, v1.91.5, v1.91.4-docking...
12 months ago

1.90

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!

📣 Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
FAQ: https://www.dearimgui.com/faq/
Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started
Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki!
It has sections such as this Getting Started and Useful Extensions Gallery! 👌

Thank you! ❤️

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations.
If your company uses Dear ImGui, please reach out. See Sponsors page.

Ongoing work on Dear ImGui is currently financially supported by:

Special thanks to @GamingMinds-DanielC, @PathogenDavid, @sakiodre, for their help with github answers.

Last release we reached 50000 stars. Our latest arbitrary milestone is that for a brief moment we had 777 open issues and 4444 closed ones.

Huge thank you to all past and present supporters!
Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8, v1.89.9. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently. Remember that our policy is to comment out obsolete names/symbols after 24 months, so at minimum you must update once year to reduce update complexity, but the most frequently you update the easier it will be.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the multi-select feature in it. Guess what? It's not done (now scheduled for 1.91)! And because 1.90 changelog is big enough already I'm tagging it now. There are about 1000 lines of changelog between 1.89 and 1.90.

TL;DR

  • Resizable child windows (manual and automatic modes, with support for constraints)!
  • Changed BeginChild() signature to enable new features: replaced bool border=false with ImGuiChildFlags, backward compatible.
  • Angled table headers!
  • Double-clicking on window border to auto-resize on this axis.
  • Separators fixes and better standardization with other widgets.
  • Tooltips, Drag and Drop, Menus, InputText, Tables, Fonts: many fixes and improvements.
  • Docking: revised undocking to reduce accidental whole-node undocking (read details below).
  • Docking: fixes some cases of misrestored currently focused tab on application restore.
  • Backends: Vulkan: Simplification for texture upload (less work by app/user).
  • Backends: SDL3: Update to latest fluctuating work-in-progress SDL3 api.
  • More demo, more debug tools, various non-publicized-yet internal features, many other things!

Resizable child windows
child_resizable2_with_constraints

Angled table headers
table angled headers 3

Breaking Changes:

  • BeginChild(): Upgraded bool border = false parameter to ImGuiChildFlags flags = 0;. Added ImGuiChildFlags_Border value. As with our prior "bool-to-flags" API updates, the ImGuiChildFlags_Border value is guaranteed to be == true forever to ensure a smoother transition, meaning all existing calls will still work.
    If you want to neatly transition your call sites:
    • Before: BeginChild("Name", size, true)
    • After: BeginChild("Name", size, ImGuiChildFlags_Border)
    • Before: BeginChild("Name", size, false)
    • After: BeginChild("Name", size) or BeginChild("Name", 0) or BeginChild("Name", size, ImGuiChildFlags_None).
  • Existing code will still work as ImGuiChildFlags_Border == true, but you are encouraged to update call sites.
  • BeginChild(): Added child-flag ImGuiChildFlags_AlwaysUseWindowPadding as a replacement for the window-flag ImGuiWindowFlags_AlwaysUseWindowPadding: the feature only ever made sense for use with BeginChild() anyhow, passing it to Begin() had no effect. Now that we accept child-flags we are moving it there. Kept inline redirection enum (will obsolete later) so existing code will work. (#462)
    • Before: BeginChild("Name", size, 0, ImGuiWindowFlags_AlwaysUseWindowPadding);
    • After: BeginChild("Name", size, ImGuiChildFlags_AlwaysUseWindowPadding, 0);
  • BeginChildFrame()/EndChildFrame(): removed functions in favor of using BeginChild() with the ImGuiChildFlags_FrameStyle flag. Kept inline redirection function (will obsolete). Those functions were merely PushStyleXXX/PopStyleXXX helpers and custom versions are easy to create. (The removal isn't so much motivated by needing to add the feature in BeginChild(), but by the necessity to avoid BeginChildFrame() signature mismatching BeginChild() signature and features.)
  • Debug Tools: Renamed ShowStackToolWindow() ("Stack Tool") to ShowIDStackToolWindow() ("ID Stack Tool"), as earlier name was misleading. Kept inline redirection function. (#4631)
  • IO: Removed io.MetricsActiveAllocations introduced in 1.63, was displayed in Metrics and unlikely to be accessed by end-user. Value still visible in the UI and easily to recompute from a delta.
  • Defining IMGUI_DISABLE_OBSOLETE_FUNCTIONS now automatically defines IMGUI_DISABLE_OBSOLETE_KEYIO. (#4921)
  • Removed IM_OFFSETOF() macro in favor of using offsetof() available in C++11. Kept redirection define. (#4537)
  • ListBox, Combo: Changed signature of "name getter" callback in old one-liner ListBox()/Combo() apis.
    • Before:
      • getter type: bool (*getter)(void* user_data, int idx, const char** out_text)
      • function: bool Combo(const char* label, int* current_item, bool (*getter)(void* user_data, int idx, const char** out_text), ...);
      • function: bool ListBox(const char* label, int* current_item, bool (*getting)(void* user_data, int idx, const char** out_text), ...);
    • After:
      • getter type: const char* (*getter)(void* user_data, int idx)
      • function: bool Combo(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...);
      • function: bool ListBox(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...);
    • Old type was unnecessarily complex and harder to wrap in e.g. a lambda. Kept inline redirection function (will obsolete).
  • Commented out obsolete redirecting enums/functions that were marked obsolete two years ago:
    • GetWindowContentRegionWidth() -> use GetWindowContentRegionMax().x - GetWindowContentRegionMin().x. Consider that generally GetContentRegionAvail().x is often more correct and more useful.
    • ImDrawCornerFlags_XXX -> use ImDrawFlags_RoundCornersXXX names. Read 1.82 changelog for details + grep commented names in sources.
    • Commented out runtime support for hardcoded ~0 or 0x01..0x0F rounding flags values for AddRect()/AddRectFilled()/PathRect()/AddImageRounded(). -> Use ImDrawFlags_RoundCornersXXX flags. Read 1.82 changelog for details.
  • Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload the font atlas texture. (#6943, #6715, #6327, #3743, #4618)

Other Changes:

  • Windows:
    • BeginChild(): Added ImGuiChildFlags_ResizeX and ImGuiChildFlags_ResizeY to allow resizing child windows from the bottom/right border (toward layout direction). Resized child windows settings are saved and persistent in .ini file. (#1710)
    • BeginChild(): Added ImGuiChildFlags_Border as a replacement for 'bool border = true' parameter.
    • BeginChild(): Added ImGuiChildFlags_AutoResizeX and ImGuiChildFlags_AutoResizeY to auto-resize on one axis, while generally providing a size on the other axis. (#1666, #1395, #1496, #1710) e.g. BeginChild("name", {-FLT_MIN, 0.0f}, ImGuiChildFlags_AutoResizeY);
      • Size is only reevaluated if the child window is within visible boundaries or just appearing. This allows coarse clipping to be performed and auto-resizing childs to return false when hidden because of being scrolled out.
      • Combining this with also specifying ImGuiChildFlags_AlwaysAutoResize disables this optimization, meaning child contents will never be clipped (not recommended).
      • Please be considerate that child are full windows and carry significant overhead: combining auto-resizing for both axises to create a non-scrolling child to merely draw a border would be better more optimally using BeginGroup(). (until we come up with new helpers for framed groups and work-rect adjustments, see #1496).
    • BeginChild(): made it possible to use SetNextWindowSizeConstraints() rectangle, often useful when ImGuiChildFlags_AutoResizeX or ImGuiChildFlags_AutoResizeY. (#1666, #1395, #1496) Custom constraint callback are not supported with child window.
    • BeginChild(): Added ImGuiChildFlags_FrameStyle as a replacement for BeginChildFrame(), use it to make child window use FrameBg, FrameRounding, FrameBorderSize, FramePadding instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding.
    • Popups: clarified meaning of p_open != NULL in BeginPopupModal() + set back user value to false when popup is closed in ways other than clicking the close button. (#6900)
    • Double-clicking lower-left resize grip auto-resize (like lower-right one).
    • Double-clicking bottom or right window border auto-resize on a singles axis.
    • Use relative mouse movement for border resize when the border geometry has moved (e.g. resizing a child window triggering parent scroll) in order to avoid resizing feedback loops. Unless manually mouse-wheeling while border resizing. (#1710)
  • Separators:
    • Altered end-points to use more standard boundaries. (#205, #4787, #1643) Left position is always current cursor X position, right position is always work-rect rightmost edge. It effectively means that:
      • A separator in the root of a window will end up a little more distant from edges than previously (essentially following WindowPadding instead of clipping edges).
      • A separator inside a table cell end up a little distance from edges instead of touching them (essentially following CellPadding instead of clipping edges).
      • Matches tree indentation (was not the case before).
      • Matches SeparatorText(). (#1643)
      • Makes things correct inside groups without specific/hard-coded handling. (#205)
    • Support legacy behavior when used inside old Columns(), as we favored that idiom back then, only different is left position follows indentation level, to match calling a Separator() inside or outside Columns().
  • Tooltips:
    • Made using SetItemTooltip()/IsItemHovered(ImGuiHoveredFlags_ForTooltip) defaults to activate tooltips on disabled items. This is done by adding ImGuiHoveredFlags_AllowWhenDisabled to the default value of style.HoverFlagsForTooltipMouse/style.HoverFlagsForTooltipNav. (#1485)
    • Made is possible to combine ImGuiHoveredFlags_ForTooltip with a ImGuiHoveredFlags_DelayXXX override. (#1485)
  • Drag and Drop:
    • Reworked drop target highlight: reduce rectangle to its visible portion, and then expand slightly. A full rectangle is always visible and it may protrude slightly. (#4281, #3272)
    • Fixed submitting a tooltip from drop target location when using AcceptDragDropPayload() with ImGuiDragDropFlags_AcceptNoPreviewTooltip and submitting a tooltip manually.
  • Tables:
    • Added angled headers support. You need to set ImGuiTableColumnFlags_AngledHeader on selected
      columns and call TableAngledHeadersRow(). Added style.TableAngledHeadersAngle style option.
    • Added ImGuiTableFlags_HighlightHoveredColumn flag, currently highlighting column header.
    • Fixed an edge-case when no columns are visible + table scrollbar is visible + user code is always testing return value of TableSetColumnIndex() to coarse clip. With an active clipper it would have asserted. Without a clipper, the scrollbar range would be wrong.
    • Request user to submit contents when outer host-window is requesting auto-resize, so a scrolling table can contribute to initial window size. (#6510)
    • Fixed subtle drawing overlap between borders in some situations.
    • Fixed bottom-most and right-most outer border offset by one. (#6765, #3752) [@v-ein]
    • Fixed top-most and left-most outer border overlapping inner clip-rect when scrolling. (#6765)
    • Fixed top-most outer border being drawn with both TableBorderLight and TableBorderStrong in some situations, causing the earlier to be visible underneath when alpha is not 1.0f.
    • Fixed right-clicking right-most section (past right-most column) from highlighting a column.
    • Fixed an issue with ScrollX enabled where an extraneous draw command would be created.
  • Menus:
    • Menus: Fixed a bug where activating an item in a child-menu and dragging mouse over the parent-menu would erroneously close the child-menu. (Regression from 1.88). (#6869)
    • MenuBar: Fixed an issue where layouting an item in the menu-bar would erroneously register contents size in a way that would affect the scrolling layer. Was most often noticeable when using an horizontal scrollbar. (#6789)
  • InputText:
    • InputTextMultiline(): Fixed a crash pressing Down on last empty line of a multi-line buffer. (regression from 1.89.2, only happened in some states). (#6783, #6000)
    • `InputTextMultiline(): Fixed Tabbing cycle leading to a situation where Enter key wouldn't be accepted by the widget when navigation highlight is visible. (#6802, #3092, #5759, #787)
  • Nav: Tabbing always enable nav highlight when ImGuiConfigFlags_NavEnableKeyboard is set. Previously was inconsistent and only enabled when stepping through a non-input item. (#6802, #3092, #5759, #787)
  • TreeNode: Added ImGuiTreeNodeFlags_SpanAllColumns for use in tables. (#3151, #3565, #2451, #2438)
  • TabBar: Fixed position of unsaved document marker (ImGuiTabItemFlags_UnsavedDocument) which was accidentally offset in 1.89.9. (#6862) [@alektron]
  • ColorPicker4(): Fixed ImGuiColorEditFlags_NoTooltip not being forwarded to individual DragFloat3 sub-widgets which have a visible color preview when ImGuiColorEditFlags_NoSidePreview is also set. (#6957)
  • BeginGroup(): Fixed a bug pushing line lower extent too far down when called after a call to SameLine() followed by manual cursor manipulation.
  • BeginCombo(): Added ImGuiComboFlags_WidthFitPreview flag. (#6881) [@mpv-enjoyer]
  • BeginListBox(): Fixed not consuming SetNextWindowXXX() data when returning false.
  • Fonts:
    • Argument float size_pixels passed to AddFontXXX() functions is now rounded to lowest integer. This is because our layout/font system currently doesn't fully support non-integer sizes. Until it does, this has been a common pitfall leading to more or less subtle issues. (#3164, #3309, #6800)
    • Better assert during load when passing truncated font data or wrong data size. (#6822)
    • Ensure calling AddFontXXX function doesn't invalidates ImFont's ConfigData pointers prior to building again. (#6825)
    • Added ImFontConfig::RasterizerDensity field to increase texture size of rendered glyphs without altering other metrics. Among other things, this makes it easier to have zooming code swapping between 2 fonts (e.g. a 100% and a 400% fonts) depending on current scale. (#6925) [@thedmd] Important: if you increase this it is expected that you would render the font with a scale of
      similar value or magnitude. Merely increasing this without increasing scale may lower quality.
    • imgui_freetype: Added support for ImFontConfig::RasterizerDensity. (#6925) [@thedmd]
    • imgui_freetype: Fixed a warning and leak in IMGUI_ENABLE_FREETYPE_LUNASVG support. (#6842, #6591)
  • Inputs: Added IsKeyChordPressed() helper function e.g. IsKeyChordPressed(ImGuiMod_Ctrl | ImGuiKey_S). (note that ImGuiMod_Shortcut may be used as an alias for Cmd on OSX and Ctrl on other systems).
  • Misc: Most text functions also treat "%.*s" (along with "%s") specially to bypass formatting. (#3466, #6846)
  • IO: Add extra keys to ImGuiKey enum: ImGuiKey_F13 to ImGuiKey_F24. (#6891, #4921)
  • IO: Add extra keys to ImGuiKey enum: ImGuiKey_AppBack, ImGuiKey_AppForward. (#4921)
  • IO: Setting io.WantSetMousePos ignores incoming MousePos events. (#6837, #228) [@bertaye]
  • Debug Tools: Metrics: Added log of recent alloc/free calls.
  • Debug Tools: Metrics: Added "Show groups rectangles" in tools.
  • ImDrawList: Added AddEllipse(), AddEllipseFilled(), PathEllipticalArcTo(). (#2743) [@Doohl]
  • ImVector: Added find_index() helper.
  • Demo: Added "Drag and Drop -> Tooltip at target location" demo.
  • Demo: Added "Layout -> Child Windows -> Manual-resize" demo. (#1710)
  • Demo: Added "Layout -> Child Windows -> Auto-resize with constraints" demo. (#1666, #1395, #1496, #1710)
  • Demo: Partly fixed "Examples -> Constrained-resizing window" custom constrains demo. (#6210) [@cfillion]
  • Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload font atlas texture. Fixed leaks, and added ImGui_ImplVulkan_DestroyFontsTexture() (probably no need to call this directly). (#6943, #6715, #6327, #3743, #4618)
    [@helynranta, @thomasherzog, @guybrush77, @albin-johansson, @MiroKaku, @benbatya-fb, @ocornut]
  • Backends: GLFW: Clear emscripten's MouseWheel callback before shutdown. (#6790, #6096, #4019) [@halx99]
  • Backends: GLFW: Added support for F13 to F24 function keys. (#6891)
  • Backends: SDL2, SDL3: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891)
  • Backends: SDL3: Updates for recent API changes. (#7000, #6974)
  • Backends: Win32: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891)
  • Backends: Win32: Added support for keyboard codepage conversion for when application is compiled in MBCS mode and using a non-Unicode window. (#6785, #6782, #5725, #5961) [@sneakyevil]
  • Backends: Win32: Synthesize key-down event on key-up for VK_SNAPSHOT / ImGuiKey_PrintScreen as Windows doesn't emit it (same behavior as GLFW/SDL). (#6859) [@thedmd, @SuperWangKai]
  • Backends: OpenGL3: rename symbols in our internal loader so that LTO compilation with another copy of gl3w becomes possible. (#6875, #6668, #4445) [@nicolasnoble]
  • Backends: OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load "libGL.so" instead of "libGL.so.1", accommodating for NetBSD systems having only "libGL.so.3" available. (#6983)
  • Backends: OSX: Added support for F13 to F20 function keys. Support mapping F13 to PrintScreen. (#6891)
  • Examples: GLFW+Vulkan, SDL+Vulkan: Simplified and removed code due to backend improvements.
  • Internals: Renamed ImFloor() to ImTrunc(). Renamed ImFloorSigned() to ImFloor(). (#6861)

Changes from 1.89.9 to 1.90.0 related to the docking branch (multi-viewport and docking features):

  • Viewports: Fixed window inner clipping rectangle off by one when window is located on a monitor with negative coordinates. While it is expected that other small issues with arise from this situation, at the moment we are fixing the most noticeable one. (#6861, #2884) [@Vuhdo, @alektron]
  • Docking: revised undocking to reduce accidental whole-node undocking:
    • cannot undock a whole node by dragging from empty space in tab-bar.
    • can undock whole node by dragging from window/collapse menu button.
    • can undock single window by dragging from its tab.
    • can still move (but not undock) whole node or whole hierarchy when node is part of a floating hierarchy.
    • added tooltip when hovering the collapse/window menu button, to facilitate understanding that whole dock node may be undocked or grabbed from here.
  • Docking: Fixed an issue leading to incorrect restoration of selected tab in dock nodes that don't carry the currently focused window. (#2304)
  • Docking: added ImGuiDockNodeFlags_NoUndocking. (#2999, #6823, #6780, #3492)
  • Docking: renamed ImGuiDockNodeFlags_NoSplit to ImGuiDockNodeFlags_NoDockingSplit.
  • Docking: renamed ImGuiDockNodeFlags_NoDockingInCentralNode to ImGuiDockNodeFlags_NoDockingOverCentralNode.
  • Docking: Internals: renamed ImGuiDockNodeFlags_NoDockingSplitMe to ImGuiDockNodeFlags_NoDockingSplit.
  • Docking: Fixed a bug where ClassId compare tests (when using SetNextWindowClass) on success would prevent further filter from running, namely the one that prevent docking over a popup.
  • Backends: GLFW: Fixed an assertion in situation where the WndProc handler is different between main and secondary viewport (may happen due to third-party hooks). (#6889)
  • Backends: DX9: Fixed incorrect assert triggering on reopening session with minimized windows. (#3424)

Changes from 1.89.9 to 1.90.0 related to the prototype range-select branch:

This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. I know I said this API would have been stabilized by now, but it's not! I expect that the latest major API breaking changes are now done. Hopefully this is on track to be stable and merged in 1.91.

Open for details of Multi-Select/Range-Select changes
  • RangeSelect/MultiSelect: (Breaking) ImGuiMultiSelectIO now contains a ImVector<ImGuiSelectionRequest> list. This api will allow box-selection to work. (see a1e85e0).
  • RangeSelect/MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_ClearOnClickWindowVoid to ImGuiMultiSelectFlags_ClearOnClickVoid.
  • RangeSelect/MultiSelect: added support for nested/stacked BeginMultiSelect().
  • RangeSelect/MultiSelect: added ImGuiMultiSelectFlags_ScopeWindow, ImGuiMultiSelectFlags_ScopeRect to override/specify scope.
  • RangeSelect/MultiSelect: added support for ImGuiMultiSelectFlags_BoxSelect (doesn't work well with clipper yet).
  • RangeSelect/MultiSelect: added support for missing EndMultiSelect() recovery in ErrorCheckEndWindowRecover().
  • RangeSelect/MultiSelect: clarified purpose and use of IsItemToggledSelection(). Added assert. Moved to multi-selection section of imgui.h.
  • RangeSelect/MultiSelect: demo: rework and move selection adapter inside ExampleSelection.
  • RangeSelect/MultiSelect: various internal fixes/improvements.

Thank you for reading this changelog!

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite
https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui).
https://github.com/dearimgui/dear_bindings

Some interesting new third-party projects:

Gallery

Some debug tools in Alan Wake 2
https://www.remedygames.com/article/how-northlight-makes-alan-wake-2-shine
Alan Wake 2 6544c372589da1e2a2285809_luau_weather_system

@allenwp: The AV Latency.com Toolkit is an open source software suite that is used to accurately measure audio latency of consumer electronics for the purpose of audio-video synchronization (AV sync). RTINGS.com will soon be integrating this toolkit into their test methods.
AV Latency.com tooltip

@skaarj1989: SupernovaEngine
SceneEditor
https://github.com/skaarj1989/SupernovaEngine

@coumcashier: "I would like to find out what ImGui's styling system could do. So I created a clone of the sign in page for a popular gaming platform. It implements changing border color on hover/active state for buttons and checkbox as this is commonly found in web apps but not provided by default in ImGui. Its follows the vibe design system from Monday.com."

asdf.mp4

@pavelsevecek: "I'm using ImGui for my space simulation software."
https://pavelsevecek.github.io/
image

@Froyok: "I'm still iterating on my Game Engine UI and now have switched to the docking branch. I'm using a lot of custom tweaks in here, but without modifying Dear ImGui itself."
2023-09-13__18-28-05

Machina Labs (https://machinalabs.ai) using Dear ImGui, spotted in SmarterEveryDays Video about incremental sheet forming:
image

Quake II remastered debug tools
https://bethesda.net/en/article/6NIyBxapXOurTKtF4aPiF4/enhancing-quake-ii
QII_Tech_debug_in-body

@hugeproblem: "Yet another node graph editor [..] It's not a immediate-mode-node-graph addon for ImGui, but more of a (embeddable, customizable, extensible, scriptable) standalone application. It has nice looking default appearance:"
https://github.com/hugeproblem/nged
visuals7
(+ many cool gifs at #6478 (comment))

@JorenJoestar: "As needed aid to write our "Mastering Graphics Programming with Vulkan", ImGui was essential. Probably not the most advanced usage of it, but the possibility of debugging any texture in realtime (especially with bindless rendering), or having a simple but effective GPU profiler, needed to check the timings for each technique developed for each chapter, or simply having all the debug options and tweables for each render subsystem was like having a team to help!"
https://github.com/PacktPublishing/Mastering-Graphics-Programming-with-Vulkan
raptor_ch15_imgui

@ocjb: "My work in progress game engine."
image

IOLITE voxel game engine
https://iolite-engine.com/
screenshot_19

Meta XR Simulator
https://developer.oculus.com/downloads/package/meta-xr-simulator/
378383830_1358858478377994_5108334384719819498_n

Generative Fill for Video at Adobe Max #ProjectFastFill
https://www.youtube.com/watch?v=kyYk-u2rxYA
Capture

@arnaud-jamin: "Cog is a set of debug tools for Unreal Engine"
https://github.com/arnaud-jamin/Cog
image

Adventure game Engine for MSX2 + game Stan the Dreamers
https://jamque.itch.io/stan-the-dreamer-msx2/devlog/396876/a-new-adventure-game-engine-has-come-to-msx2\
F8d0-TcWwAAMBFd

@guillaC: SQLiteDiskExplorer and
"SQLiteDiskExplorer is a tool designed to assist you in the efficient management of your SQLite files. Explore and manage your SQLite files with ease using SQLiteDiskExplorer, Your valuable data is just a scan away !"
https://github.com/guillaC/SQLiteDiskExplorer
image
image

Wallet "is application that lets you manage your stock and finance. It is meant to be lite and efficient. It is not a trading platform."
https://wallet.wiimag.com/
wallet

@TheGoodDoktor: "Spectrum Analyser is a program that helps you to reverse engineer ZX Spectrum games. I wrote it for my own amusement but others have found it interesting too."
https://github.com/TheGoodDoktor/8BitAnalysers
Spectrum Analyser

@quantmage: QuantMage is a SaaS platform for algorithmic & quantitative stock investment. It's using ImGui+WASM for its logic editor and backtesting tool frontend.
https://quantmage.app/grimoire/88feda7697abf9d66cf63ae359ac3cb2
Screenshot 2023-10-30 at 10 32 02 AM

@jamesdolezal: "Slideflow Studio is a user interface for deploying deep learning models for digital pathology research applications. Dear Imgui (and the python wrapper, pyimgui) were essential in making this a success. Thank you for developing this wonderful framework!"
slideflow_studio

@Saul-Alejandro-Gonzalez-Vilchis: "INDEX 2024 is a game engine IDE program that will be released on December 31, 2023 also powered by the private hazel source code. Its user interface is so beautiful that a lot of effort will be put into it. that's why we will add a "Ribbon Bar" system. [...] Thank for ImGui & Hazel Core Team"
https://github.com/INDEV-Technologies/INDEX

Recording.mp4

@Ermelber: Mario Kart Toolbox: "This is a Mario Kart DS modding suite I've been working on with @Gericom. This uses the latest and greatest .NET 7.0 with C# bindings thanks to ImGui.NET (using an OpenGL backend with [OpenTK] https://github.com/opentk/opentk)) and we use a modified version of ImGuizmo for 3D controls."
Screenshot 2023-11-13 100615


Also see previous releases details.
Note that GitHub are now clamping release notes sometimes really badly, click on a header/title to read full notes.

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations.
If your company uses Dear ImGui, please reach out. See Sponsors page.

Don't miss a new imgui release

NewReleases is sending notifications on new releases.