#imgui #graphics #docking #multiview #ui

bin+lib dear-implot3d-sys

Low-level FFI bindings for ImPlot3D via cimplot3d (C API)

4 releases (breaking)

Uses new Rust 2024

new 0.6.0 Nov 28, 2025
0.5.0 Oct 24, 2025
0.4.0 Oct 7, 2025
0.3.0 Oct 6, 2025

#2146 in GUI

Download history 311/week @ 2025-10-03 69/week @ 2025-10-10 17/week @ 2025-10-17 152/week @ 2025-10-24

153 downloads per month
Used in 2 crates (via dear-implot3d)

MIT/Apache

5MB
95K SLoC

C++ 55K SLoC // 0.2% comments Rust 40K SLoC // 0.0% comments

dear-implot3d-sys

Low-level FFI bindings for ImPlot3D via the cimplot3d C API. This crate pairs with dear-imgui-sys (cimgui C API) and exposes raw functions/types used by the high-level dear-implot3d crate.

Features

  • prebuilt: allow the build script to auto-download a release archive when available (or when IMPLOT3D_SYS_USE_PREBUILT=1).
  • build-from-source: force building native sources with cc even if a prebuilt could be linked.
  • package-bin: enable an internal bin/package helper to produce release artifacts.

Build Modes

This crate supports multiple ways to obtain the native dear_implot3d static library:

  • Source build (default)
    • Compiles cimplot3d.cpp and upstream implot3d/*.cpp with cc.
    • Inherits include paths and preprocessor defines from dear-imgui-sys.
  • System/prebuilt library
    • Links an existing static library from a directory you provide (see env vars below).
  • Docs.rs
    • Generates Rust bindings only; native code is not compiled.

Environment Variables

  • IMPLOT3D_SYS_LIB_DIR
    • Directory containing the prebuilt static library.
    • Expected names: dear_implot3d.lib (Windows/MSVC), libdear_implot3d.a (Unix).
  • IMPLOT3D_SYS_PREBUILT_URL
    • Direct URL to the prebuilt static library file, or to a .tar.gz package produced by our packager.
    • Downloaded to OUT_DIR/prebuilt/ and reused on subsequent builds.
  • IMPLOT3D_SYS_USE_PREBUILT
    • If set to 1 or the prebuilt feature is enabled, the build script may auto-download a release asset.
  • IMPLOT3D_SYS_SKIP_CC
    • If set, skips native C/C++ compilation. Typically used with one of the above.
  • IMPLOT3D_SYS_FORCE_BUILD
    • Force building from source even if a prebuilt could be used.
  • IMPLOT3D_SYS_PACKAGE_DIR, IMPLOT3D_SYS_CACHE_DIR
    • Overrides for local package discovery and cache locations.

The build script also consumes include paths and defines exported by dear-imgui-sys:

  • DEP_DEAR_IMGUI_IMGUI_INCLUDE_PATH, DEP_DEAR_IMGUI_CIMGUI_INCLUDE_PATH
  • DEP_DEAR_IMGUI_DEFINE_*

Examples

  • Default (source build):
cargo build -p dear-implot3d-sys -p dear-implot3d
  • System/prebuilt (Windows):
$env:IMPLOT3D_SYS_LIB_DIR = "C:\\prebuilt\\implot3d"
cargo build -p dear-implot3d-sys
  • System/prebuilt (Unix):
export IMPLOT3D_SYS_LIB_DIR=/opt/implot3d/lib
cargo build -p dear-implot3d-sys
  • Remote prebuilt download:
# Windows: URL must point to dear_implot3d.lib or a .tar.gz package
$env:IMPLOT3D_SYS_PREBUILT_URL = "https://example.com/dear_implot3d.lib"

# Unix: URL must point to libdear_implot3d.a or a .tar.gz package
export IMPLOT3D_SYS_PREBUILT_URL=https://example.com/libdear_implot3d.a

cargo build -p dear-implot3d-sys

Notes

  • Linking to the base ImGui static library is provided by dear-imgui-sys; this crate does not duplicate cargo:rustc-link-lib for it.
  • MSVC (Windows) builds align CRT and exception flags with dear-imgui-sys.
  • docs.rs builds generate bindings only and export include paths for downstream crates.
  • Higher-level Rust APIs live in extensions/dear-implot3d/. See that crate and examples/implot3d_basic.rs for usage.

Dependencies

~5–25MB
~347K SLoC