Skip to content

Releases: Latias94/dear-imgui-rs

v0.15.0

14 Jun 03:33

Choose a tag to compare

Breaking Changes

  • Safe handles and RAII tokens now clean up through the context that created them. This makes it supported to keep multiple ImGui, ImPlot, ImPlot3D, ImNodes, or ImGuizmo contexts alive and switch between them without stack cleanup, drawing, or post-frame queries accidentally targeting the wrong current context.
  • Ui::push_font_with_size(...) now returns FontStackToken. Keep the token alive for the font scope and let it drop to pop the font. Fixes #31, thanks @spindlymist.
  • Obsolete public manual pop/end helpers for stack scopes were removed. Use the returned RAII tokens instead.
  • ImPlot item submission now takes the owner &PlotUi, for example LinePlot::new(...).plot(&plot_ui) and PlotBuilder::new(...).build(&plot_ui). Other context-dependent ImPlot APIs such as SubplotGrid::begin(...), MultiAxisPlot::begin(...), and LegendManager::{setup, begin_custom}(...) now take &PlotUi too.
  • ImPlot and ImPlot3D style helpers moved onto PlotUi / Plot3DUi. Use plot_ui.push_style_*, plot_ui.push_colormap_*, plot_ui.with_next_plot_item_array_style(...), plot_ui.with_next_plot3d_item_array_style(...), and the Plot3DUi next-style setters instead of safe free functions.
  • dear-imnodes removed deprecated post-frame query methods from active NodeEditor handles. Call let post = editor.end(); and then query post.selected_nodes(), post.is_link_created(), post.clear_selection(), and the other PostEditor helpers.

Added

  • Added the multi_context_switch example showing how integrations can keep multiple contexts alive and switch between them with Context::suspend() / SuspendedContext::activate().

Fixed

  • Destroying the current ImPlot or ImPlot3D context now clears the corresponding global current-context pointer instead of restoring a dangling pointer to the destroyed context.
  • dear-imgui-bevy now keeps the scheduled ImGui frame open across Bevy systems until ImguiEndFrame, avoiding premature frame closure before platform feedback and rendering systems run.

v0.14.1

10 Jun 08:37

Choose a tag to compare

Added

  • Add shared native dependency discovery helpers for build scripts, with pkg-config and vcpkg backends for FreeType and SDL3 header lookup.
  • Add Windows CI coverage for vcpkg-only native dependency discovery.

Fixed

  • dear-imgui-sys/freetype now fails fast when FreeType cannot be found instead of silently compiling without the FreeType rasterizer. Fixes #30, thanks @spindlymist.
  • dear-imgui-sys and dear-imgui-sdl3 now fall back to vcpkg on Windows MSVC targets when pkg-config cannot provide FreeType or SDL3 header metadata.

v0.14.0

26 May 05:27

Choose a tag to compare

Added

  • Added experimental dear-imgui-bevy support for Bevy 0.19.0-rc.2, including primary-window overlays, docking, WGPU rendering, Bevy texture interop, and preview-grade native multi-viewport support.
  • Added Bevy examples that cover a minimal overlay, plugin-style app integration, a docked game-engine editor surface, and ecosystem demos for ImPlot, ImNodes, and ImGuizmo.

Bevy Examples

Example Source Run command
simple examples/basic/simple.rs cargo run -p dear-imgui-bevy --features render --example simple
app_integration examples/app/app_integration.rs cargo run -p dear-imgui-bevy --features render --example app_integration
game_engine examples/game_engine/game_engine.rs cargo run -p dear-imgui-bevy --features render --example game_engine
game_engine with multi-viewport examples/game_engine/game_engine.rs cargo run -p dear-imgui-bevy --features render,multi-viewport --example game_engine
ecosystem examples/ecosystem/ecosystem.rs cargo run -p dear-imgui-bevy --features render --example ecosystem
bevy_plot_controls examples/ecosystem/bevy_plot_controls.rs cargo run -p dear-imgui-bevy --features render --example bevy_plot_controls

Screenshots

dear-imgui-bevy game engine multi-viewport example

dear-imgui-bevy app integration example dear-imgui-bevy ecosystem example

Fixed

  • dear-imgui-bevy now ensures window swapchain images are touched before present, avoiding Vulkan validation errors when Bevy performs an initial or warmup present.
  • Existing renderer backend multi-viewport paths are safer when multiple backends or contexts are involved: WGPU and Ash now ignore foreign RendererUserData pointers, and Glow clears renderer-owned multi-viewport state when a renderer is destroyed.
  • Glow texture updates now reuse the GL texture already registered for an existing TextureId and apply the same RGBA expansion path for Alpha8 uploads.

v0.13.0

15 May 09:57

Choose a tag to compare

This release upgrades the Dear ImGui stack, removes the normal-build dependency
on LLVM/libclang, adds native imgui-node-editor bindings, and continues the
safe API hardening work started in the previous releases. The detailed
v0.12.0..HEAD history is grouped below by user-visible effect rather than by
individual validation commit.

Highlights

  • Upgrade the core stack to Dear ImGui v1.92.8 (docking) and refresh the
    extension sys crates against the same baseline.
  • Normal source builds now use checked-in pregenerated bindings by default.
    LLVM/libclang is only needed when explicitly regenerating bindings with
    DEAR_IMGUI_RS_REGEN_BINDINGS=1 --features bindgen.
  • Add native-only dear-node-editor / dear-node-editor-sys support backed by
    cimnodes_editor / imgui-node-editor, including examples modeled after the
    upstream basic-interaction and blueprints-style demos.
  • Add the stack layout compatibility path required by node-editor blueprints and
    expose safe begin_horizontal, begin_vertical, and spring helpers.
  • Harden the safe API across texture ownership, input text buffers, draw-list
    cloning, table/docking/widget preconditions, callback lifetimes, and
    multi-context ownership.
  • Fix multi-context and multi-viewport backend paths so Winit/WGPU/Glow/Ash
    state, callbacks, and teardown target the intended ImGui context.

Breaking Changes

  • Core (dear-imgui-rs)
    • User texture registration now tracks OwnedTextureData lifetimes from the
      safe API. Raw TextureData registration moved to explicit unsafe raw
      helpers.
    • Font atlas/config loader setters require &'static FontLoader, and
      FontConfig::glyph_exclude_ranges(...) now accepts inclusive (start, end)
      ranges matching Dear ImGui's upstream contract.
    • Infallible TextureId conversions into usize or raw pointers were
      removed. Use try_as_usize(), try_as_ptr(), or try_as_mut_ptr().
    • The duplicate read-only draw-list snapshot types in draw were removed;
      use the unified render draw-data types instead.
    • WindowFlags::DOCK_NODE_HOST was removed because Dear ImGui treats it as an
      internal Begin/NewFrame flag.
    • TextCallbackData is now bound to the input-text callback frame lifetime so
      callback handlers cannot retain it after Dear ImGui returns.
    • PlatformIo aggregate-return callbacks now use out-parameters, and typed
      callback setters must be installed on the active context's PlatformIo.
      Cross-context installation panics instead of splitting the C callback table
      from Rust callback storage.
    • Viewport::flags() / set_flags(...) now use typed ViewportFlags.
      Backend code that must manipulate raw bits should use raw_flags() or
      unsafe set_raw_flags_unchecked(...).
    • WindowClass now carries typed viewport, tab item, dock node, and platform
      icon fields. Struct literals should add the new fields or switch to
      WindowClass::new / Default.
    • set_item_key_owner{,_with_flags} now returns Dear ImGui's ownership-request
      result, matching Dear ImGui v1.92.8.
    • DrawCmd gained SetSamplerLinear and SetSamplerNearest; exhaustive
      draw-command matches must handle the new variants.
  • Core (dear-imgui-sys)
    • Stop exposing cimgui's ImGuiPlatformIO_Set_Platform_GetWindowPos and
      ImGuiPlatformIO_Set_Platform_GetWindowSize helpers from generated bindings.
      Use the repository-owned *_OutParam wrappers instead; they do not consume
      BackendLanguageUserData.
  • Backends
    • Change dear-imgui-winit::multi_viewport::shutdown_multi_viewport_support
      to take &mut Context, matching the renderer backends and making shutdown
      target an explicit ImGui context.
  • Extensions
    • Change dear-implot::PlotContext::current() to an explicit unsafe
      non-owning wrapper. Code that owns an ImPlot context should use
      PlotContext::create(...); callers that borrow a raw current context must
      acknowledge the raw lifetime and ownership contract.
    • Change dear-implot APIs that accept arbitrary ImPlot axes to use typed
      Axis / YAxis values instead of raw i32 indices. Raw-axis calls remain
      available through explicit unsafe *_unchecked escape hatches.

Added

  • Extensions
    • Add native-only dear-node-editor and dear-node-editor-sys support backed
      by cimnodes_editor / imgui-node-editor.
    • Add safe node-editor APIs for editor contexts, typed config/style values,
      node/pin/link scopes, create/delete sessions, selection mutation, queries,
      selection/action-context counts, group hints, node background draw lists,
      shortcut toggles, styled create/reject feedback, and RAII-scoped editor
      suspension.
    • Add node_editor_basic, a compact Winit + WGPU example modeled after the
      upstream basic-interaction example.
    • Add node_editor_showcase, a blueprints-style Winit + WGPU example using
      the stack layout helpers and a Rust BlueprintNodeBuilder.
    • Expose new ImGuizmo handle/move-type queries and custom grid/axis drawing
      helpers through MoveType, GizmoUi::active_handle_type,
      hovered_handle_type, active_move_type, hovered_move_type,
      draw_axes, draw_grid_custom, and draw_grid_custom_color.
  • Core (dear-imgui-sys)
    • Add the native stack layout compatibility layer required by the node-editor
      blueprints example, including repository-owned dear_imgui_stack_* C ABI
      symbols and build-time ItemSize() / ItemAdd() hooks in the generated
      imgui.cpp build copy.
  • Core (dear-imgui-rs)
    • Add stack layout helpers used by the node-editor blueprints showcase:
      begin_horizontal, begin_vertical, and spring.
    • Add RAII-scoped helpers for button-repeat and draw-list texture stacks:
      Ui::push_button_repeat_token, Ui::with_button_repeat,
      DrawListMut::push_texture_token, and DrawListMut::with_texture.
    • Expose Dear ImGui v1.92.8 style additions:
      StyleColor::CheckboxSelectedBg, StyleVar::DragDropTargetRounding,
      Style::drag_drop_target_rounding, drag_drop_target_border_size,
      drag_drop_target_padding, and color_marker_size.
    • Expose additional Style accessors and StyleVar variants for scrollbar
      padding, image borders, tab sizing/borders, angled table headers, tree-line
      styling, separator text styling, and docking separator size.
    • Expose Dear ImGui v1.92.8 draw-list helpers DrawListMut::add_line_h and
      DrawListMut::add_line_v.
    • Expose raw PlatformIo accessors for standard draw callbacks:
      DrawCallback_ResetRenderState, DrawCallback_SetSamplerLinear, and
      DrawCallback_SetSamplerNearest.

Changed

  • Workspace
    • Refresh dear-implot-sys, dear-implot3d-sys, dear-imnodes-sys,
      dear-imguizmo-sys, dear-imguizmo-quat-sys, and
      dear-imgui-test-engine-sys submodules and pregenerated native/WASM
      bindings against the Dear ImGui v1.92.8 stack.
  • Core (dear-imgui-rs)
    • Upgrade the core Dear ImGui/cimgui baseline to Dear ImGui v1.92.8 (docking).
    • Store typed PlatformIo callbacks per active ImGuiContext instead of in
      process-wide Rust slots, while preserving the dear-imgui-sys
      out-parameter shim path for aggregate-return callbacks.
    • Track DrawListMut borrows per raw ImDrawList* on the current thread
      instead of using process-wide locks, and resolve background/foreground draw
      lists against the main viewport.
    • Make DrawListMut::clone_output() return render::OwnedDrawList.
  • Core (dear-imgui-sys)
    • Use checked-in pregenerated bindings by default for normal source builds, so
      users can build without installing LLVM/libclang unless they explicitly
      regenerate bindings. Fixes #28, thanks @dtugend.
    • Make the bindgen build dependency optional behind a bindgen feature.
      Binding regeneration now requires both DEAR_IMGUI_RS_REGEN_BINDINGS=1 and
      --features bindgen.
    • Compile the stack layout compatibility hooks by default for normal native
      builds, and reject older prebuilts unless their manifest declares
      features=stack-layout.
  • Extensions
    • Use checked-in pregenerated bindings by default for extension *-sys normal
      builds, and make their bindgen build dependencies optional behind
      bindgen features.
    • Clarify dear-imguizmo-quat global static setting semantics and add
      GizmoQuatSettings / GizmoQuatSettingsToken for temporary restoration of
      getter-backed sensitivity, scale, flip, and reverse settings.
  • Backends
    • Register Dear ImGui v1.92.8 standard reset/sampler draw callbacks in the
      WGPU and Glow renderers. WGPU now keeps both linear and nearest sampler bind
      groups; Glow switches texture filtering when sampler callbacks are
      encountered.
    • Route Winit multi-viewport aggregate-return callbacks through the
      out-parameter shim path and bind setup, event routing, shutdown, and callback
      cleanup to the provided Context.

Fixed

  • Core (dear-imgui-rs)
    • Expand FFI precondition validation across textures, fonts, draw lists,
      tables, legacy columns, docking, windows, child windows, widgets, popups,
      combos, tabs, color editors, sliders, drags, scalar arrays, drag/drop
      payloads, IO values, style values, hover/focus flags, viewport flags, and
      runtime geometry. Invalid values are rejected in safe Rust before reaching
      Dear ImGui assertions or unchecked indexing paths.
    • Expose child-window builder, token, and ChildFlags through public
      dear_imgui_rs::* paths so Ui::child_window(...).child_flags(...) is
      usable from downstream crates. Fixes #29, thanks @CoffeeCatRailway.
    • Add missing public ConfigFlags, BackendFlags, and TreeNodeFlags bits,
      including ConfigFlags::NO_KEYBOARD,
      `BackendFl...
Read more

v0.12.0

09 May 07:57

Choose a tag to compare

This release removes the last invalid Condition value from the safe API and splits several overly broad flag sets into type-safe options so Dear ImGui's runtime assertions can no longer be triggered from normal Rust code. It also aligns the unified release train to 0.12.0 across the workspace.

Highlights

  • Remove Condition::Never and make APIs that previously accepted invalid or overloaded condition/flag values use explicit option types instead.
  • Split the combo, table, color, tab, popup, multi-select, shortcut routing, drag/drop, and drag/slider APIs so mutually exclusive Dear ImGui choices cannot be combined accidentally.
  • Update dear-imgui-reflect so numeric widget helpers route slider and drag flags through the correct safe wrapper types.

Breaking Changes

  • Core (dear-imgui-rs)
    • Remove Condition::Never.
    • Change Window::content_size(...) to accept only the size vector.
    • Replace several public flag arguments with explicit option types or narrower flag sets: DragDropPayloadCond, ShortcutFlags, ShortcutOptions, ShortcutRoute, NextItemShortcutFlags, NextItemShortcutOptions, ItemKeyOwnerFlags, DragFlags, ComboBoxOptions, TableOptions, TableColumnWidth, TableColumnIndent, TableColumnStateFlags, ColorEditOptions, ColorPickerOptions, ColorButtonOptions, TabBarOptions, TabItemOptions, PopupContextOptions, MultiSelectOptions, MultiSelectBoxSelect, MultiSelectScopeKind, DrawCornerFlags, and PolylineFlags.
    • Update builder/setup structs to store typed options directly, including ComboBox::options, TableColumnSetup::width, and TableColumnSetup::indent.
    • Remove the ambiguous TableColumnSetup::init_width_or_weight() helper in favor of fixed_width() and stretch_weight().
  • Extensions
    • dear-imgui-reflect: numeric wrap_around now applies to drag widgets only.

Migration Guide

  • Replace Condition::Never with the nearest valid intent, usually Condition::Always, Condition::Once, or Condition::FirstUseEver.
  • For one-choice flag domains, move the choice into the dedicated option type instead of OR-ing unrelated bits together.
  // before
  // ui.shortcut_with_flags(chord, ShortcutFlags::REPEAT | ShortcutFlags::ROUTE_GLOBAL);
  //
  // after
  ui.shortcut_with_flags(
      chord,
      ShortcutOptions::new()
          .flags(ShortcutFlags::REPEAT)
          .route(ShortcutRoute::Global(ShortcutGlobalRouteFlags::NONE)),
  );
  • Update code that passed mixed flag domains to the new typed options instead of OR-ing everything into one flag value. The main new types are ShortcutOptions, ShortcutRoute, TableColumnIndent, MultiSelectClickPolicy, MultiSelectBoxSelect, MultiSelectScopeKind, DrawCornerFlags, and PolylineFlags.
  • For rounded rectangles and image corners, use DrawCornerFlags. For closed paths, set PolylineBuilder::closed(true) or pass PolylineFlags only to polyline/path APIs.
  • For table columns, move width and indentation into the typed helpers instead of encoding them into TableColumnFlags.
// before
// ui.table_setup_column("Name", TableColumnFlags::INDENT_ENABLE, Some(140.0), 0);
//
// after
ui.table_setup_column_with_indent(
    "Name",
    TableColumnFlags::NONE,
    Some(TableColumnWidth::Fixed(140.0)),
    Some(TableColumnIndent::Enable),
    0,
);
  • Replace TableColumnSetup::init_width_or_weight() with fixed_width() or stretch_weight(), and move indentation to TableColumnSetup::indent(...) or indent_enabled(...).
  • When touching shortcut routing or multi-select, split the former combined flags into the dedicated option types before passing them into the API.

Changed

  • Backends
    • Update the default WGPU 29 dependency family to 29.0.3, SDL3 bindings to sdl3 0.18.3 / sdl3-sys 0.6.5+SDL-3.4.8, and the WASM binding stack to wasm-bindgen 0.2.121 / web-sys and js-sys 0.3.98.
    • Re-export the selected WGPU crate as dear_imgui_wgpu::wgpu so tests and downstream integrations can name the exact WGPU major chosen by dear-imgui-wgpu's feature flags.

Fixed

  • Core (dear-imgui-rs)
    • Fixes #27, thanks @belst. Remove the invalid Condition::Never value that could reach Dear ImGui's assertion paths, and tighten the APIs that previously exposed unsupported condition values in helper builders.
    • Split tab bar fitting policy, table column indent policy, context popup mouse button, and multi-select click/box/scope policies out of their corresponding public flag sets so normal Rust code cannot combine invalid single-choice flag values or request NavWrapX outside Dear ImGui's supported window scope.
    • Split shortcut routing policy out of ShortcutFlags and NextItemShortcutFlags, and type global-only routing modifiers separately, so normal Rust code cannot combine route modes that Dear ImGui rejects.
    • Split rectangle corner rounding and polyline/path-stroke flags into DrawCornerFlags and PolylineFlags, so ImDrawFlags_Closed can no longer be passed to rounded rectangle APIs that reject it.
  • Extensions
    • dear-imgui-reflect: route slider and drag numeric flags through distinct helper methods so the derived widgets no longer emit invalid flag combinations for Dear ImGui.

v0.11.0

07 Apr 03:47

Choose a tag to compare

Upgrade to Dear ImGui v1.92.7 (docking branch) via cimgui docking_inter, refresh cimplot / cimplot3d, regenerate native + import-style WASM bindings, and expand the safe Rust API around the latest ImPlot / ImPlot3D spec-based item styling.
This release also formalizes the repository-owned backend_shim surface in dear-imgui-sys, adds repository-local iOS / Android smoke examples, and simplifies publishing around the Python release scripts.

Highlights

  • Upgrade the core stack to Dear ImGui v1.92.7 and refresh the vendored
    cimgui / cimplot / cimplot3d submodules with regenerated native + WASM bindings.
  • Introduce the repository-owned dear-imgui-sys::backend_shim surface for official backend glue,
    including new SDLRenderer3 support and clearer low-level backend ownership.
  • Expand the ImPlot / ImPlot3D safe APIs around spec-backed item styling,
    per-index array styling, color enums, and the remaining builder gaps.
  • Add repository-local iOS and Android smoke examples covering
    dear-imgui-winit + dear-imgui-wgpu, dear-imgui-sdl3 + dear-imgui-wgpu,
    and low-level Android NativeActivity + EGL / GLES integration shapes.
  • Simplify release operations by moving dear-imgui-build-support onto the unified
    0.11.0 train and removing the release-plz workflow in favor of the Python publishing scripts.

Breaking Changes

  • Core (dear-imgui-sys)
    • Replace the provisional raw_backend::{win32, dx11, android, opengl3} surface with
      backend_shim::{win32, dx11, android, opengl3} behind backend-shim-* feature gates.
      Consumers using the old low-level sys surface must migrate to the new repository-owned shim ABI.
  • Extensions
    • dear-imnodes: remove the deprecated EditorContext methods that relied on the global current ImNodes context, as well as EditorContext::create/try_create. Use Context::{create_editor_context,try_create_editor_context} and Context::bind_editor(&editor) instead.

Added

  • Core (dear-imgui-rs)
    • Expose the new Dear ImGui v1.92.7 surface in the safe API with Ui::tree_node_get_open(), Viewport::debug_name(), StyleVar::SeparatorSize, ButtonFlags::ALLOW_OVERLAP, and updated MultiSelectFlags names/compatibility aliases for the upstream SelectOnAuto rename.
  • Core (dear-imgui-sys)
    • Extend that backend shim surface with feature-gated backend_shim::sdlrenderer3 support for Dear ImGui's official SDLRenderer3 backend, including SDL3 header discovery for both system-provided SDL3 installs and sdl3-sys build-from-source outputs (PR #24, thanks @flowkclav).
  • Extensions
    • dear-implot: add safe PlotUi::plot_polygon() / PlotBuilder::polygon() wrappers for upstream PlotPolygon, plus the new PolygonFlags.
    • dear-implot: add unified ImPlot v0.18 spec-backed item styling helpers across all ImPlotSpec-backed plot builders via PlotItemStyle / PlotItemStyled, including direct builder methods such as with_line_color, with_fill_alpha, with_marker, and with_size. This closes the high-level Rust API gap where plot item color/alpha styling was available in the C bindings but not exposed consistently by the safe layer (addresses #26, thanks @sstscrypto).
    • dear-implot: add PieChartFlags::NO_SLICE_BORDER plus closure-scoped PlotItemArrayStyle / with_next_plot_item_array_style(...) helpers for the new upstream per-index ImPlotSpec arrays (LineColors, FillColors, MarkerSizes, MarkerLineColors, MarkerFillColors) without introducing dangling pointer hazards into the safe API.
    • dear-implot3d: add unified ImPlot3DSpec-backed item styling helpers across spec-backed plot builders via Plot3DItemStyle / Plot3DItemStyled, covering both plots::* items and Plot3DUi builders such as surface_f32(), image_by_axes(), and mesh(). Also expose Marker3D::Auto so the safe API can round-trip ImPlot3D's default automatic marker selection.
    • dear-implot3d: add typed Plot3DColorElement values for style colors, including the new axis background slots, plus closure-scoped Plot3DItemArrayStyle / with_next_plot3d_item_array_style(...) helpers for the new upstream per-index ImPlot3DSpec arrays.
    • dear-implot3d: wire Item3DFlags into spec-backed plot wrappers/builders via with_item_flags(...), so common NO_LEGEND / NO_FIT flags can now be composed from the safe API instead of remaining a defined-but-unreachable flag set.
  • Backends
    • dear-imgui-sdl3: add optional sdlrenderer3-renderer support and wrapper APIs for the official SDL3 + SDLRenderer3 path, including init_for_canvas / canvas_new_frame / canvas_render / shutdown_for_canvas.
  • Examples
    • Add a standalone repository-local examples-android/dear-imgui-android-smoke Android template that demonstrates the low-level dear-imgui-rs + dear-imgui-sys route without introducing a new published crate or changing the workspace's default build matrix.
    • Add minimal cargo-apk2 packaging metadata to the Android smoke template and verify that it can produce a signed debug NativeActivity APK for aarch64-linux-android.
    • Add a repository-local APK packaging helper for the Android smoke template and document release signing plus per-ABI APK packaging while keeping the checked-in smoke path single-ABI and repository-local.
    • Add a standalone repository-local examples-ios/dear-imgui-ios-smoke example that demonstrates a dear-imgui-winit + dear-imgui-wgpu iOS integration shape, including XCFramework packaging helpers and a checked-in Xcode host stub for simulator/device validation.
    • Add a standalone repository-local examples-ios/dear-imgui-ios-sdl3-smoke example that demonstrates a dear-imgui-sdl3 + dear-imgui-wgpu iOS integration shape, including a checked-in Xcode host stub and an SDL3 framework helper that can consume app-owned framework artifacts or build SDL3.framework from the upstream sdl3-src source tree.
    • Add an sdl3_sdlrenderer example plus the sdl3-sdlrenderer3 example feature for Dear ImGui on SDL3 + SDL_Renderer.

Changed

  • Core (dear-imgui-sys)
    • Upgrade vendored cimgui docking_inter to Dear ImGui v1.92.7 and regenerate native + import-style WASM bindings.
  • Core (dear-imgui-rs)
    • Keep backend shim feature gates in dear-imgui-sys only; the safe crate does not re-export backend-specific toggles until it owns corresponding safe wrappers.
  • Extensions
    • dear-implot-sys / dear-implot3d-sys: refresh the vendored cimplot / cimplot3d submodules and regenerate native + WASM bindings.
    • dear-implot / dear-implot3d: initialize the new upstream ImPlotSpec / ImPlot3DSpec array fields in the safe wrapper defaults so spec-backed plots remain ABI-correct after the latest cimplot / cimplot3d updates.
    • dear-implot3d: adapt the safe mesh() wrapper to the new typed ImPlot3D_PlotMesh_*Ptr entry points while preserving the existing Rust-facing API shape.
    • dear-implot: standardize plot-item styling so LinePlot, ScatterPlot, BarPlot, HistogramPlot, HeatmapPlot, ErrorBarsPlot, ShadedPlot, StairsPlot, StemPlot, TextPlot, and other ImPlotSpec-based builders now share the same styling surface instead of mixing per-type convenience methods with raw style-object-only paths.
    • dear-implot: let ShadedBetweenPlot configure offset / stride like other spec-backed line-style builders, and remove an outdated comment that still described the old pre-wrapper state.
  • Core (dear-imgui-sys)
    • Link GLESv3 for the Android OpenGL3 backend shim so downstream Android NativeActivity binaries can load successfully before the application creates its own EGL / GLES context.
    • Expand the crate and module documentation around backend_shim so the repository-owned shim ABI, Android low-level route, and ownership split with application packaging are explicit in the main docs.
  • Backends
    • Re-verify the existing backend crates against the Dear ImGui v1.92.7 / cimgui refresh. No additional backend API surface changes were required for this upstream bump.
    • dear-imgui-wgpu: add feature-gated support for wgpu v29, make wgpu-29 the default backend path, and keep wgpu-28 / wgpu-27 as explicit compatibility features.
    • dear-imgui-sdl3: keep SDL3-specific wrapper/build ownership in the backend crate, but route the optional official OpenGL3 renderer path through dear-imgui-sys::backend_shim::opengl3 instead of compiling a second local OpenGL3 shim layer.
    • dear-imgui-sdl3: stop forcing sdl3/build-from-source on Android from the backend crate itself. Android SDL3 acquisition now remains application-owned: consumers may either provide SDL3_INCLUDE_DIR or opt into sdl3/build-from-source in their own dependency graph.
    • dear-imgui-sdl3: on Apple targets, keep SDL3 acquisition application-owned instead of forcing sdl3/build-from-source from the backend/examples crates. macOS continues to use the system/Homebrew SDL3 path, while iOS is now documented as an app-owned framework or app-owned build-from-source route.
  • Examples
    • Upgrade examples-android/dear-imgui-android-smoke from a startup-only smoke path to a minimal NativeActivity + EGL / GLES3 render loop that displays Dear ImGui windows on-device while preserving app-owned Android packaging and lifecycle glue, without turning the template into a published runtime crate.
    • Switch the Android smoke APK helper from a Windows-only PowerShell script to a cross-platform Python script, and tune the README screenshot presentation for GitHub rendering.
    • Document the Apple example split explicitly: keep desktop/native cargo run demos in examples/, and keep iOS/Android smoke templates in top-level examples-ios/ / examples-android/ folders because they require host projects, packaging steps, or mobile-specific tooling.
  • Docs
    • Add Apple integration notes that expl...
Read more

v0.10.4

17 Mar 05:26

Choose a tag to compare

Deprecated

  • Extensions
    • dear-imnodes: EditorContext::* methods that rely on the global current ImNodes context are deprecated and will be removed in 0.11.0. Use Context::bind_editor(&EditorContext) instead.
    • dear-imnodes: EditorContext::create/try_create are deprecated and will be removed in 0.11.0. Use Context::{create_editor_context,try_create_editor_context} instead.

Changed

  • Core (dear-imgui-rs)
    • Widgets: split widget::input into focused submodules for text callbacks and numeric builders without intended public API changes.
    • Platform: split platform_io into focused submodules for viewport wrappers and callback trampolines without intended public API changes.

Fixed

  • Core (dear-imgui-rs)
    • Fonts: keep FontAtlas::set_texture_id() aligned with the managed ImTextureData path so the atlas TexRef continues to track backend-driven texture ID updates instead of degrading to a legacy ID-only reference.
  • Backends
    • dear-imgui-glow: harden the modern texture update path by keeping the fallback font-atlas texture in sync with managed atlas create/update/destroy requests.
    • dear-imgui-glow: align texture destroy handling with other renderers by setting WantDestroyNextFrame before marking managed textures as Destroyed.
    • dear-imgui-glow: refactor sub-rectangle RGBA conversion into a reusable helper and add regression tests mirroring the dear-imgui-wgpu coverage for RGBA32 / Alpha8 uploads.
    • dear-imgui-glow: fix external-context rendering so render_with_context() now uses the caller-provided GL context for managed texture create/update/destroy requests from DrawData::textures() instead of failing when the renderer does not own the context. Fixes #22, thanks @CoffeeCatRailway.
    • dear-imgui-glow: add register_texture_with_context() / update_texture_with_context() helpers plus a runnable external-context regression example covering the create/update/destroy flow.
    • dear-imgui-wgpu: stop tracking a separate renderer-side font atlas ID cache in the fallback path; legacy fallback uploads now check the atlas TexRef plus live texture-manager state directly, keeping modern managed textures as the source of truth.

v0.10.3

28 Feb 02:35

Choose a tag to compare

Fixed

  • dear-imgui-sys
    • Link shell32/user32/kernel32/imm32 explicitly on Windows to fix GNU/MinGW toolchains that ignore ImGui's #pragma comment(lib, ...) (Fixes #20).

CI

  • Add a Windows GNU (MinGW) link check job to catch missing system libraries (e.g. shell32) at PR time.

v0.10.2

24 Feb 07:12

Choose a tag to compare

Deprecated

  • Extensions
    • dear-imnodes: EditorContext::* methods that rely on the global current ImNodes context are deprecated and will be removed in 0.11.0. Use Context::bind_editor(&EditorContext) instead.
    • dear-imnodes: EditorContext::create/try_create are deprecated and will be removed in 0.11.0. Use Context::{create_editor_context,try_create_editor_context} instead.

Added

  • Core (dear-imgui-rs)
    • Context::alive_token() / ContextAliveToken: allow extension crates to detect if an ImGui context has been dropped (helps avoid calling FFI with dangling ImGuiContext*).

Fixed

  • Extensions
    • dear-imnodes: fix potential use-after-free hazards by scoping editor post-frame handles and style tokens to the active editor/frame lifetime.
    • dear-imnodes: ensure minimap callbacks remain alive for the full editor frame.
    • dear-imnodes: harden context binding (ImGui/ImNodes/editor) for editor operations and token drops.
    • dear-imnodes: guard ImGui context rebinding against dropped contexts (panic instead of UB on misuse).
    • dear-imnodes: validate raw style-var indices in push_style_var_* helpers to avoid out-of-bounds access in release builds.
    • dear-imnodes: fix imnodes_basic context menu crash (Fixes #19).
    • dear-implot: harden ImGui context binding and guard context drop order hazards via ContextAliveToken (panic or best-effort leak instead of UB).
    • dear-implot3d: guard context drop order hazards via ContextAliveToken (best-effort leak instead of UB).
    • dear-imgui-test-engine: record bound ImGui context liveness via ContextAliveToken and guard shutdown/drop order hazards (panic or best-effort leak instead of UB).

v0.10.1

21 Feb 11:01

Choose a tag to compare

Added

  • Extensions
    • dear-imgui-test-engine / dear-imgui-test-engine-sys: Dear ImGui Test Engine support (PR #17, thanks @honeyspoon).