v0.7.0
Unified release train bump to 0.7.0 with Rust-side API improvements and backend updates.
Upstream Dear ImGui/cimgui version is unchanged in this release (still Dear ImGui v1.92.5 docking, same as 0.6.0).
Highlights
- Experimental native multi-viewport for Winit + WGPU (
dear-imgui-winit::multi_viewport,dear-imgui-wgpu::multi_viewport) withmulti_viewport_wgpuexample. - Theme API + optional
serdesupport for core enums/flags to make layouts/themes easier to persist. - Multi-select helpers for list/table selection (
Ui::multi_select_*,Ui::table_multi_select_indexed). - New extension crate
dear-imgui-reflectfor derive-based editors (ImReflect-style auto UI). dear-imgui-wgpurenderer improvements: unified errors, pipeline layout reuse, tighter texture lifetime handling, and per-texture custom samplers.dear-appGPU recovery: attempts a full rebuild on fatal WGPU errors.- WebAssembly import-style provider module
imgui-sys-v0plusxtaskcommands to build the core + selected extensions.
Breaking Changes
dear-imgui-wgpu: removedmulti-viewportfeature; usemulti-viewport-winit(Winit route) ormulti-viewport-sdl3(SDL3 route).dear-imgui-sdl3: official OpenGL3 renderer is now opt-in behindopengl3-renderer(SDL3 platform-only by default).- Example:
cargo run -p dear-imgui-examples --bin sdl3_opengl_multi_viewport --features multi-viewport,sdl3-opengl3
- Example:
Added
- Core (
dear-imgui-sys,dear-imgui-rs)- Optional
glamintegration soglam::Vec2/Vec4can be passed directly to drawing and coordinate-taking APIs. - IO: mouse source/viewport helpers (
Io::add_mouse_source_event,Io::add_mouse_viewport_event,MouseSource,BackendFlags::HAS_MOUSE_HOVERED_VIEWPORT) to match latest Dear ImGui input model. - IO: expanded safe
Ioaccessors for common configuration and backend fields (e.g. ini/log filenames read-only,UserDataand backend user data pointers, key repeat and mouse thresholds, backend names). - IO, layout & style: optional
serdesupport for core enums and flags (Key,MouseButton,MouseCursor,MouseSource,InputTextFlags,ConfigFlags,BackendFlags,ViewportFlags,WindowFlags,TableFlags,TableColumnFlags,TableRowFlags,TableBgTarget,SortDirection,StyleColor) behind theserdefeature for easier hotkey, layout/table, and theme configuration persistence. - Styling: a small, high-level theme configuration layer (
Theme,ThemePreset,ColorOverride,StyleTweaks,WindowTheme,TableTheme) on top ofImGuiStyleso applications can define reusable color/rounding/spacing presets and serialize them when theserdefeature is enabled. - Multi-select: high-level helpers on top of
BeginMultiSelect/EndMultiSelect(MultiSelectFlags,Ui::multi_select_indexed,Ui::table_multi_select_indexed,Ui::multi_select_basic,Ui::is_item_toggled_selection,BasicSelection) for list/table selection with ctrl/shift/box-select behavior.
- Optional
- New extension crate:
dear-imgui-reflect- Derive-based helpers for generating ImGui editors for structs and enums (ImReflect-style auto UI).
dear-imgui-winit- IME support for winit 0.30 (cursor area updates and enable/disable helpers) plus a new
ime_debugexample. - Convenience API
WinitPlatform::handle_window_eventforApplicationHandler-style event loops. - Native (pure-Rust) multi-viewport support for Winit + WGPU (platform windows/events in
dear-imgui-winit::multi_viewport, renderer callbacks indear-imgui-wgpu::multi_viewport).
Run with:cargo run -p dear-imgui-examples --bin multi_viewport_wgpu --features multi-viewport
- IME support for winit 0.30 (cursor area updates and enable/disable helpers) plus a new
- WebAssembly (import-style, experimental)
- Import-style provider module
imgui-sys-v0andxtaskcommands to build the core + selected extensions (ImPlot, ImPlot3D, ImNodes, ImGuizmo, ImGuizmo.quat) forwasm32-unknown-unknown.
- Import-style provider module
- Examples
- Texture demos (WGPU, dear-app WGPU, Glow) now ship a clean gradient test image (
texture_clean.ppm) alongside the existing JPEG, making texture sampling artifacts easier to inspect. style_and_fontsquickstart example now demonstrates the theme API with several ready-to-use presets (Dark/Light/Classic) plus styled themes (modern dark, Catppuccin Mocha, Darcula, Cherry) adapted from popular Dear ImGui community snippets (including ocornut/imgui#707), showing how to configure and switch custom themes in a single place.
Run with:cargo run -p dear-imgui-examples --bin style_and_fonts
- Texture demos (WGPU, dear-app WGPU, Glow) now ship a clean gradient test image (
Changed
-
dear-imgui-rs
- Align several flag types (FreeType font loader flags, child window flags) with upstream Dear ImGui constants to reduce the risk of bit mismatches on future upgrades.
-
Extensions (
dear-implot,dear-implot3d,dear-imnodes,dear-imguizmo,dear-imguizmo-quat,dear-file-browser)- Refresh bindings to the latest C APIs and tighten safe wrappers; includes making file-extension filters in the file browser case-insensitive.
- ImGuizmo: keep the internal helper window ("gizmo") on the main viewport when ImGui multi-viewport is enabled, preventing an extra black OS window on Windows (workaround for CedricGuillemet/ImGuizmo#378).
-
dear-imgui-wgpu
- Unified internal error handling to use the shared
RendererErrortype instead of ad-hocResult<_, String>values in frame/texture paths, making GPU failures easier to diagnose. - Simplified pipeline/bind group layout wiring so the render pipeline now reuses the layouts owned by
RenderResources/UniformBuffer, avoiding duplicated layout definitions and potential mismatches. - Tightened texture/bind group lifetime coupling: when ImGui textures are created, updated, or destroyed via the 1.92+ texture system, any cached image bind groups are invalidated and rebuilt on demand.
- Minor internal cleanups (logging feature flag for multi-viewport traces, dead-code reductions) to keep the backend warning-free on newer Rust toolchains.
- Added optional per-external-texture custom samplers. New APIs:
register_external_texture_with_samplerandupdate_external_texture_sampler.
Seewgpu_rtt_gameviewfor a runtime sampler-switching demo. - Added a render-target format preflight when an adapter is provided, requiring the chosen
render_target_formatto beRENDER_ATTACHMENT-capable and blendable. - Experimental native multi-viewport support for SDL3 + WGPU via
multi_viewport_sdl3, with a newsdl3_wgpu_multi_viewportexample.
Run with:cargo run -p dear-imgui-examples --bin sdl3_wgpu_multi_viewport --features sdl3-wgpu-multi-viewport
- Unified internal error handling to use the shared
-
dear-app
- Render loop now performs basic GPU/surface loss recovery: if a frame render returns a fatal GPU error, dear-app tears down the existing
AppWindowand attempts to recreate the WGPU device/surface/renderer stack using the sameRunnerConfig/add-ons. - Existing graceful handling of
SurfaceError::Lost/Outdatedremains in place (surface is reconfigured in-place when possible); the new logic adds a “full rebuild” path for irrecoverable errors instead of leaving the app in a broken redraw loop.
- Render loop now performs basic GPU/surface loss recovery: if a frame render returns a fatal GPU error, dear-app tears down the existing