This release brings a major upgrade with Dear ImGui v1.91.5, a new python binding library (nanobind), various quality-of-life improvements (notably in the node editor), and support for Python 3.13.
Python Bindings
Transition to Nanobind - Nov 2024
We’ve replaced Pybind11 with Nanobind for Python bindings. This change should be seamless for most users. If you encounter any issues, please let us know.
Python 3.13 Support
- Prebuilt binary wheels are now available for Python 3.11, 3.12, and 3.13. (Python 3.10 remains supported, requiring source builds.)
Additional Changes
glfw_backend
: Updated clipboard handling to the new API.- Key enum bindings: Removed
im_gui_
prefix from values. - Flags enums (e.g.,
InputTextFlagsPrivate_
,TreeNodeFlagsPrivate_
): Cleaned up unnecessary prefixes. ImFontGlyph
: Published methodsget_codepoint()
,is_visible()
, andis_colored()
.imgui_fig
: Added support for user-defined Matplotlib renderers.- Stubbed
ImVec2
/ImVec4
math operators (fix #267). pyglet_backend
: Fixed version checks (thanks to @DragonMoffon).implot
: Resolved issues withsetup_axis_links()
bindings.- Optimized startup by deferring PIL and Matplotlib imports.
- Initial steps toward supporting Pyodide.
ImmVision
Breaking Change - October 2024: Explicit Color Order Configuration
You must now explicitly set the color order (RGB or BGR) in your program. Use one of the following before displaying images:
- C++:
ImmVision::UseRgbColorOrder()
orImmVision::UseBgrColorOrder()
- Python:
immvision.use_rgb_color_order()
orimmvision.use_bgr_color_order()
- Temporary overrides:
ImmVision::PushColorOrderBgr/Rgb()
andImmVision::PopColorOrder()
.
This ensures clarity regarding color order. Failure to set it will result in an error when attempting to display images.
Additional Notes:
- The
IsColorOrderBGR
member inImageParams
and theisBgrOrBgra
parameter inImageDisplay
have been removed.
- Published
GlTexture
in the API. - Prevented zooming when zoom level becomes excessively extreme.
Hello ImGui: Updated to v1.6.0
- SVG Font Rendering: Switched from
lunasvg
toplutosvg
(default:HELLOIMGUI_USE_FREETYPE_PLUTOSVG
). - Added
AddDockableWindow
andRemoveDockableWindow
APIs. - Enhanced
demo_docking
to better showcase docking and theme customization. - Introduced
HelloImGui::ManualRender
: A namespace with functions for fine-grained rendering control. - Progressed on Pyodide integration (for ImGui Bundle).
- Improved font rendering for iOS.
Node Editor
Many quality of life improvements: see demo on this page
- Enhanced popup placement and child window handling. See issue #310.
InputTextMultiline
now works within the node editor (opens as a popup for editing).- Node theme colors now align better with the overall theme.
ImGuiMd
- Added
ImGuiMd::GetFont(const MarkdownFontSpec& fontSpec)
.
ImmApp
- Introduced
Immapp::ManualRender
: A namespace with functions for fine-grained rendering control.
ImGui
- Updated ImGui to v1.91.5.
Demos
- Docking Demo: Improved layout and theme setup.
- Python Demos: Removed OpenCV dependency; now uses Pillow for image loading.
- Removed outdated demos, including ImGuizmo curve editing (only maintaining 3D Gizmo compatibility).
Contributors & Acknowledgements
- @DragonMoffon made their first contribution in PR #269.
- Thanks to @sammycage for assisting with font rendering improvements (see this discussion
- Special thanks to @davidlatwe for supporting the transition from Pybind11 to Nanobind.
- Gratitude to @wjakob for guidance on building with Nanobind.
- Shoutout to @lukaasm for patching popup rendering in the node editor.
- And as always a big shoutout to @ocornut, creator of Dear ImGui
Full Changelog: v1.5.2...v1.6.0
Please share your feedback for this release here! Your input is very valuable!