Crates.io | imgui |
lib.rs | imgui |
version | 0.12.0 |
source | src |
created_at | 2015-08-20 16:19:40.925838 |
updated_at | 2024-05-05 02:55:29.483147 |
description | High-level Rust bindings to dear imgui |
homepage | https://github.com/imgui-rs/imgui-rs |
repository | https://github.com/imgui-rs/imgui-rs |
max_upload_size | |
id | 2883 |
size | 660,840 |
ui.window("Hello world")
.size([300.0, 100.0], Condition::FirstUseEver)
.build(|| {
ui.text("Hello world!");
ui.text("こんにちは世界!");
ui.text("This...is...imgui-rs!");
ui.separator();
let mouse_pos = ui.io().mouse_pos;
ui.text(format!(
"Mouse Position: ({:.1},{:.1})",
mouse_pos[0], mouse_pos[1]
));
});
The core of imgui-rs consists of:
Next, we provide two example renderers, and two example backend platform implementations:
imgui-winit-support
: Backend platform implementation that uses the winit
crateimgui-sdl2-support
: Backend platform using SDL2imgui-glow-renderer
: Renderer implementation that uses the glow
crateimgui-glium-renderer
: Renderer implementation that uses the glium
crateEach of these contain an examples
folder showing their usage. Check
their respective Cargo.toml
to find compatible versions (e.g
imgui-glow-renderer/Cargo.toml
the [dependencies]
describes the
compatible glow
version and [dev-dependencies]
describes the
compatible glutin
version)
Finally the imgui-examples
folder contains
examples of how to use the imgui
crate itself - this covers general
topics like how to show text, how to create buttons, etc - and should
be applicable to usage with any backend/renderer.
glow
/ glium
The MSRV for imgui-rs
and all of the backend crates is 1.70. We update our MSRV periodically, and issue a minor bump for it.
Almost every application that uses imgui-rs needs two additional components in
addition to the main imgui
crate: a backend platform, and a renderer.
imgui-rs is not tied to any particular renderer or platform.
The backend platform is responsible for integrating imgui-rs with the operating system and its window management. Its responsibilities include the following:
The renderer is responsible for taking generic, renderer-agnostic draw lists generated by imgui-rs, and rendering them using some graphics API. Its responsibilities include the following:
We provide the following renderers as an official source (ie, they will always be up to date and working): imgui-glow-renderer
and imgui-glium-renderer
.
Additionally, we provide the following backends as an official source (ie, they will always be up to date and working): imgui-winit-support
and imgui-sdl2-support
.
The most tested platform/renderer combination is imgui-glium-renderer
+
glium
+ imgui-winit-support
+ winit
, but this is not the only possible
combination. There's also imgui-glow-renderer
, which will increasingly replace
glium
.
Additionally, there are other libraries which provide other kinds of renderers, which may be out of date with imgui-rs
releases, but might work well for your use case:
imgui-gfx-renderer
: Deprecated (no longer maintained beyond imgui-rs v0.8). Renderer implementation that uses the gfx
crate (not the new gfx-hal crate)
Many more can be found on crates.io either using search or the "dependents" page (the "depends on" text indicates if the crate has been updated for current versions of imgui-rs)
You can also write your own support code if you have a more advanced use case, because imgui-rs is not tied to any specific graphics / OS API.
git clone https://github.com/imgui-rs/imgui-rs
cd imgui-rs
Main examples are located in the imgui-examples
directory. These can be run like so:
# At the reposity root
cargo test
cargo run --example hello_world
cargo run --example test_window
cargo run --example test_window_impl
Examples for the Glow renderer are under the imgui-glow-renderer/examples/
directory.
These can be run the same way as any other examples:
cargo test
cargo run --example glow_01_basic
Note to Windows users: You will need to use the MSVC ABI version of the Rust compiler along with its associated dependencies to build this libary and run the examples.
Change or add something
Make sure you're using the latest stable Rust
Run rustfmt to guarantee code style conformance
rustup component add rustfmt
cargo fmt
Open a pull request in Github
Licensed under either of
at your option.
Uses Dear ImGui and cimgui.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.