v1.82
Hello!
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!
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, extensions, links, etc.
FAQ: https://www.dearimgui.org/faq/
Issues: https://github.com/ocornut/imgui/issues
Discussions: https://github.com/ocornut/imgui/discussions
Did you know? We have a Wiki!
It has sections such as this Useful Widgets gallery! 👌
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard.
- Also recently supported by Aras Pranckevičius, Kylotonn, and more.
Huge thank you to all past and present supporters!
Dear ImGui is funded by your contributions and needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.
TL;DR;
- This is a general maintenance release.
- Arcs and rounded corners are now auto-tessellated, including the "fast" paths for rounded rectangles.
- Improved/fixes old API technical debt, getting rid of more bools.
- Fixes for various edge cases formatting features in Drags/Sliders.
- Backends: Native Android backend + example.
- Backends: Consistently fixed handling of framebuffer transparency in all backends.
- Backends: DX9: Fix for colored glyphes.
- Helper scripts for popular debuggers.
- Dozens of other small additions and fixes.
Breaking Changes
(Suggestion: once in a while, add #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS
in your imconfig.h
file to make sure you are not using to-be-obsoleted symbols.)
- Removed redirecting functions/enums names that were marked obsolete in 1.66 (September 2018):
ImGui::SetScrollHere()
-->use ImGui::SetScrollHereY()
- ImDrawList: upgraded
AddPolyline()
/PathStroke()
sbool closed
parameter to useImDrawFlags flags
.bool closed = false
--> useImDrawFlags_None
, or 0bool closed = true
--> useImDrawFlags_Closed
(guaranteed to always stay == 1 in the future).
Difference may not be noticeable for most but zealous type-checking tools may report a need to change.
- ImDrawList: upgraded
AddRect()
,AddRectFilled()
,PathRect()
to useImDrawFlags
instead ofImDrawCornersFlags
.ImDrawCornerFlags_TopLeft
--> useImDrawFlags_RoundCornersTopLeft
ImDrawCornerFlags_BotRight
--> useImDrawFlags_RoundCornersBottomRight
ImDrawCornerFlags_None
--> useImDrawFlags_RoundCornersNone
etc.
Flags now sanely defaults to 0 instead of 0x0F, consistent with all other flags in the API.
IMPORTANT: The default with rounding > 0.0f is now "round all corners" vs old implicit "round no corners":- rounding == 0.0f + flags == 0 --> meant no rounding --> unchanged (common use)
- rounding > 0.0f + flags != 0 --> meant rounding --> unchanged (common use)
- rounding == 0.0f + flags != 0 --> meant no rounding --> unchanged (unlikely use)
- rounding > 0.0f + flags == 0 --> meant no rounding --> BREAKING (unlikely use)!
- this ONLY matters for hardcoded use of 0 with rounding > 0.0f.
- fix by using named
ImDrawFlags_RoundCornersNone
or rounding == 0.0f! - this is technically the only real breaking change which we can't solve automatically (it's also uncommon).
The oldImDrawCornersFlags
used awkward default values of ~0 or 0xF (4 lower bits set) to signify "round all corners" and we sometimes encouraged using them as shortcuts. As a result the legacy path still support use of hardcoded~0
or any value from0x1
or0xF
. They will behave the same with legacy paths enabled (will assert otherwise). Courtesy of legacy untangling commity: [@rokups, @ocornut, @thedmd]
- ImDrawList: clarified that
PathArcTo()
/PathArcToFast()
won't render with radius < 0.0f. Previously it sorts of accidentally worked but would lead to counter-clockwise paths which and have an effect on anti-aliasing. - InputText: renamed
ImGuiInputTextFlags_AlwaysInsertMode
toImGuiInputTextFlags_AlwaysOverwrite
, old name was an incorrect description of behavior. Was ostly used by memory editor. Kept inline redirection function. (#2863) - Moved
misc/natvis/imgui.natvis
tomisc/debuggers/imgui.natvis
as we will provide scripts for other debuggers. - Style: renamed rarely used
style.CircleSegmentMaxError
(old default = 1.60f) tostyle.CircleTessellationMaxError
(new default = 0.30f) as its meaning changed. (#3808) [@thedmd] - Win32+MinGW: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly disable those default functions for MinGW. MinGW users should: either link with -limm32, either set their imconfig file with '#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS'. (#2590, #738) [@actboy168]
- Backends: Win32: Pragma linking with dwmapi.lib (Vista-era, ~9 kb). MinGW users will need to link with -ldwmapi.
All Changes
- Window, Nav: Fixed crash when calling
SetWindowFocus(NULL)
at the same time a new window appears. (#3865) [@nem0] - Window: Shrink close button hit-testing region when it covers an abnormally high portion of the window visible area (e.g. when window is collapsed + moved in a corner) to facilitate moving the window away. (#3825)
- Nav: Various fixes for losing gamepad/keyboard navigation reference point when a window reappears or when it appears while gamepad/keyboard are not being used. (#787)
- Drags: Fixed crash when using
DragScalar()
directly (not via common wrapper like DragFloat() etc.) withImGuiSliderFlags_AlwaysClamp
+ only one of either p_min or p_max set. (#3824) [@harry75369] - Drags, Sliders: Fixed a bug where editing value would use wrong number if there were digits right after format specifier (e.g. using "%f123" as a format string). [@rokups]
- Drags, Sliders: Fixed a bug where using custom formatting flags (',$,_) supported by
stb_sprintf.h
would cause incorrect value to be displayed. (#3604) [@rokups] - Drags, Sliders: Support
ImGuiSliderFlags_Logarithmic
flag with integers. Because why not? (#3786) - Tables: Fixed unaligned accesses when using
TableSetBgColor(ImGuiTableBgTarget_CellBg)
. (#3872) - IsItemHovered(): fixed return value false positive when used after
EndChild()
,EndGroup()
or widgets using either of them, when the hovered location is located within a child window, e.g.InputTextMultiline()
. This is intended to have no side effects, but brace yourself for the possible comeback.. (#3851, #1370) - Drag and Drop: can use
BeginDragDropSource()
for other than the left mouse button as long as the item has an ID (for ID-less items will add new functionalities later). (#1637, #3885) - Misc: Added
GetAllocatorFunctions()
to facilitate sharing allocators across DLL boundaries. (#3836) - ImFontAtlas: Added
bool TexPixelsUseColors
output to help backend decide of underlying texture format. (#3369) This can currently only ever be set by the Freetype renderer. - imgui_freetype: Added
ImGuiFreeTypeBuilderFlags_Bitmap
flag to request Freetype loading bitmap data. This may have an effect on size and must be called with correct size values. (#3879) [@metarutaiga] - ImDrawList:
PathArcTo()
now supportsint num_segments = 0
(new default) and adaptively tessellate.
The adaptive tessellation uses look up tables, tends to be faster than old PathArcTo() while maintaining quality for large arcs (tessellation quality derived fromstyle.CircleTessellationMaxError
) (#3491) [@thedmd] - ImDrawList: PathArcToFast() also adaptively tesselate efficiently. This means that large rounded corners in e.g. hi-dpi settings will generally look better. (#3491) [@thedmd]
- ImDrawList: AddCircle, AddCircleFilled(): Tweaked default segment count calculation to honor MaxError with more accuracy. Made default segment count always even for better looking result. (#3808) [@thedmd]
- Misc: Added debuggers/imgui.gdb and debuggers/imgui.natstepfilter (along with existing debuggers/imgui.natvis scripts to configure popular debuggers into skipping trivial functions when using StepInto. [@rokups]
- Backends: Android: Added native Android backend. (#3446) [@duddel]
- Backends: Win32: Added
ImGui_ImplWin32_EnableAlphaCompositing()
to facilitate experimenting with alpha compositing and transparent windows. (#2766, #3447 etc.). - Backends: OpenGL, Vulkan, DX9, DX10, DX11, DX12, Metal, WebGPU, Allegro: Rework blending equation to preserve alpha in output buffer (using SrcBlendAlpha = ONE, DstBlendAlpha = ONE_MINUS_SRC_ALPHA consistently across all backends), facilitating compositing of the output buffer with another buffer. (#2693, #2764, #2766, #2873, #3447, #3813, #3816) [@ocornut, @thedmd, @ShawnM427, @Ubpa, @aiekick]
- Backends: DX9: Fix to support IMGUI_USE_BGRA_PACKED_COLOR. (#3844) [@Xiliusha]
- Backends: DX9: Fix to support colored glyphs, using newly introduced 'TexPixelsUseColors' info. (#3844)
- Examples: Android: Added Android + GL ES3 example. (#3446) [@duddel]
- Examples: Reworked setup of clear color to be compatible with transparent values.
- CI: Use a dedicated "scheduled" workflow to trigger scheduled builds. Forks may disable this workflow if scheduled builds builds are not required. [@rokups]
- Log/Capture: Added LogTextV, a va_list variant of LogText. [@PathogenDavid]
Other branches & Beta features!
Also see previous release notes such as 1.80.
The docking (#2109) and multi-viewports (#1542) features are available in the docking branch, they are in beta but actively maintained and being used by many teams already. Your continuous feedback is always appreciated.
Some of changes from 1.81 to 1.82 related to the docking branch (multi-viewport and docking features) include:
- Viewports: Fix setting of ImGuiViewportFlags_NoRendererClear. (#3213)
- Viewports: Added
GetViewportPlatformMonitor()
with a safety net to keep code portable. - Viewports, Backends: SDL: Fix missing ImGuiBackendFlags_HasSetMousePos flag in docking branch (ok in master).
- Viewports, Backends: GLFW: Fix application of WantSetMousePos. (#1542, #787)
There's a CMake pull-request (#1713) if you prefer a traditional CMake integration over registering sources files in your own project. There's a premake5 branch if you prefer the sane Visual Studio projects generated by premake.
Gallery
Below a selection of screenshots from Gallery threads...
@aiekick: "Some Screenshots of my live shader editor NoodlesPlate"
@gboisse: "Oh never realised ImGui had a color wheel option, great stuff! 🙂"
@EisernSchild "Here's a first look at my scripted thread/hlsl-shaders engine :)"
Duckstation
https://github.com/stenzek/duckstation
@soufianekhiat "I'm trying to build a collection of controls & draws which can help for my image processing/dataviz hack/prototypes."
https://github.com/soufianekhiat/DearWidgets
PS: Dear ImGui is funded by your contributions and needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.