v1.90
版本发布时间: 2023-11-15 23:51:59
ocornut/imgui最新发布版本:v1.91.3(2024-10-04 21:48:34)
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:
- BeamNG Welcome!
- Blizzard
- Esoterica Engine Welcome!
- Planestate Software
- Pocketwatch Games
- Supercell
- Wonderland Engine
- And more Individual contributions!
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: replacedbool border=false
withImGuiChildFlags
, 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
Angled table headers
Breaking Changes:
- BeginChild(): Upgraded
bool border = false
parameter toImGuiChildFlags 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)
orBeginChild("Name", 0)
orBeginChild("Name", size, ImGuiChildFlags_None)
.
- Before:
- 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-flagImGuiWindowFlags_AlwaysUseWindowPadding
: the feature only ever made sense for use withBeginChild()
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);
- Before:
-
BeginChildFrame()
/EndChildFrame()
: removed functions in favor of usingBeginChild()
with theImGuiChildFlags_FrameStyle
flag. Kept inline redirection function (will obsolete). Those functions were merelyPushStyleXXX/PopStyleXXX
helpers and custom versions are easy to create. (The removal isn't so much motivated by needing to add the feature inBeginChild()
, but by the necessity to avoidBeginChildFrame()
signature mismatchingBeginChild()
signature and features.) - Debug Tools: Renamed
ShowStackToolWindow()
("Stack Tool") toShowIDStackToolWindow()
("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 usingoffsetof()
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), ...);
- getter type:
- 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), ...);
- getter type:
- Old type was unnecessarily complex and harder to wrap in e.g. a lambda. Kept inline redirection function (will obsolete).
- Before:
- Commented out obsolete redirecting enums/functions that were marked obsolete two years ago:
-
GetWindowContentRegionWidth()
-> useGetWindowContentRegionMax().x - GetWindowContentRegionMin().x
. Consider that generallyGetContentRegionAvail().x
is often more correct and more useful. -
ImDrawCornerFlags_XXX
-> useImDrawFlags_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()
. -> UseImDrawFlags_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. RemovedImGui_ImplVulkan_DestroyFontUploadObjects()
which is now unnecessary. No need to callImGui_ImplVulkan_CreateFontsTexture()
as it is done automatically inImGui_ImplVulkan_NewFrame()
. You can callImGui_ImplVulkan_CreateFontsTexture()
manually if you need to reload the font atlas texture. (#6943, #6715, #6327, #3743, #4618)
Other Changes:
- Windows:
- BeginChild(): Added
ImGuiChildFlags_ResizeX
andImGuiChildFlags_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
andImGuiChildFlags_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 whenImGuiChildFlags_AutoResizeX
orImGuiChildFlags_AutoResizeY
. (#1666, #1395, #1496) Custom constraint callback are not supported with child window. - BeginChild(): Added
ImGuiChildFlags_FrameStyle
as a replacement forBeginChildFrame()
, use it to make child window use FrameBg, FrameRounding, FrameBorderSize, FramePadding instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding. - Popups: clarified meaning of
p_open != NULL
inBeginPopupModal()
+ 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)
- BeginChild(): Added
- 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)
- A separator in the root of a window will end up a little more distant from edges than previously (essentially following
- 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 aSeparator()
inside or outside Columns().
- 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:
- Tooltips:
- Made using
SetItemTooltip()
/IsItemHovered(ImGuiHoveredFlags_ForTooltip)
defaults to activate tooltips on disabled items. This is done by addingImGuiHoveredFlags_AllowWhenDisabled
to the default value ofstyle.HoverFlagsForTooltipMouse
/style.HoverFlagsForTooltipNav
. (#1485) - Made is possible to combine
ImGuiHoveredFlags_ForTooltip
with aImGuiHoveredFlags_DelayXXX
override. (#1485)
- Made using
- 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()
withImGuiDragDropFlags_AcceptNoPreviewTooltip
and submitting a tooltip manually.
- Tables:
- Added angled headers support. You need to set
ImGuiTableColumnFlags_AngledHeader
on selected columns and callTableAngledHeadersRow()
. Addedstyle.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
andTableBorderStrong
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.
- Added angled headers support. You need to set
- 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 whenImGuiColorEditFlags_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 toAddFontXXX()
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)
- Argument
- Inputs: Added
IsKeyChordPressed()
helper function e.g.IsKeyChordPressed(ImGuiMod_Ctrl | ImGuiKey_S)
. (note thatImGuiMod_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
toImGuiKey_F24
. (#6891, #4921) - IO: Add extra keys to ImGuiKey enum:
ImGuiKey_AppBack
,ImGuiKey_AppForward
. (#4921) - IO: Setting
io.WantSetMousePos
ignores incomingMousePos
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. RemovedImGui_ImplVulkan_DestroyFontUploadObjects()
which is now unnecessary. No need to callImGui_ImplVulkan_CreateFontsTexture()
as it is done automatically inImGui_ImplVulkan_NewFrame()
. You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload font atlas texture. Fixed leaks, and addedImGui_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()
toImTrunc()
. RenamedImFloorSigned()
toImFloor()
. (#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
toImGuiDockNodeFlags_NoDockingSplit
. - Docking: renamed
ImGuiDockNodeFlags_NoDockingInCentralNode
toImGuiDockNodeFlags_NoDockingOverCentralNode
. - Docking: Internals: renamed
ImGuiDockNodeFlags_NoDockingSplitMe
toImGuiDockNodeFlags_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
toImGuiMultiSelectFlags_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 inErrorCheckEndWindowRecover()
. - 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:
- imgui-uwp: UWP backend, by @ahmed605
- Cog: a set of debug tools for Unreal Engine built on top of Dear ImGui, by @arnaud-jamin.
- imgui_bundle by @pthom: "easily create ImGui applications in Python and C++. Batteries included!"
- see Useful extensions wiki page for more.
Gallery
Some debug tools in Alan Wake 2 https://www.remedygames.com/article/how-northlight-makes-alan-wake-2-shine
@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.
@skaarj1989: SupernovaEngine 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."
https://github.com/ocornut/imgui/assets/122149176/3dc68815-c501-42ad-97ea-9f78be8f7df3
@pavelsevecek: "I'm using ImGui for my space simulation software." https://pavelsevecek.github.io/
@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."
Machina Labs (https://machinalabs.ai) using Dear ImGui, spotted in SmarterEveryDays Video about incremental sheet forming:
Quake II remastered debug tools https://bethesda.net/en/article/6NIyBxapXOurTKtF4aPiF4/enhancing-quake-ii
@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 (+ many cool gifs at https://github.com/ocornut/imgui/issues/6478#issuecomment-1747288625)
@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
@ocjb: "My work in progress game engine."
IOLITE voxel game engine https://iolite-engine.com/
Meta XR Simulator https://developer.oculus.com/downloads/package/meta-xr-simulator/
Generative Fill for Video at Adobe Max #ProjectFastFill https://www.youtube.com/watch?v=kyYk-u2rxYA
@arnaud-jamin: "Cog is a set of debug tools for Unreal Engine" https://github.com/arnaud-jamin/Cog
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
@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
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/
@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
@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
@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!"
@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
https://github.com/ocornut/imgui/assets/126918321/d38e191f-2b9b-4e78-8b0b-848fd9948d5d
@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."
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.