Still fairly experimental!
Minimum Rust version: 1.36
Wrapped Dear ImGui version: 1.72b
rust
ui.window(im_str!("Hello world"))
.size([300.0, 100.0], Condition::FirstUseEver)
.build(|| {
ui.text(im_str!("Hello world!"));
ui.text(im_str!("こんにちは世界!"));
ui.text(im_str!("This...is...imgui-rs!"));
ui.separator();
let mouse_pos = ui.io().mouse_pos;
ui.text(im_str!("Mouse Position: ({:.1},{:.1})", mouse_pos[0], mouse_pos[1]));
})
glium
crategfx
crate (not
the new gfx-hal crate)winit
crate (0.19 by default, but 0.20 is supported via the winit-20
feature)&ImStr
/ ImString
types and im_str!
macro for defining and passing
null-terminated UTF-8 to Dear ImGui, which doesn't accept Rust &str
/
String
values. See issue #7
for more information and justification for this design.Almost every application that uses imgui-rs needs two additional components in
addition to the main imgui
crate: a backend platform, and a renderer.
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:
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-gfx-renderer
, and you can find additional 3rd
party crates that provide a wider support for more libraries (e.g. raw OpenGL,
SDL2). 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.
bash
git clone https://github.com/Gekkio/imgui-rs
cd imgui-rs
git submodule update --init --recursive
Main examples are located in the imgui-examples directory.
```bash
cd imgui-examples cargo test
cargo run --example helloworld cargo run --example testwindow cargo run --example testwindowimpl ```
Examples for the gfx backend are under the imgui-gfx-examples directory.
```bash cd imgui-gfx-examples cargo test
cargo run --example helloworld cargo run --example testwindow ```
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.
Run rustfmt to guarantee code style conformance
bash
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.