1 个不稳定版本
使用旧的 Rust 2015
0.18.1 | 2018 年 8 月 11 日 |
---|
#1052 in GUI
28 每月下载量
用于 4 个包(2 个直接使用)
11MB
197K SLoC
imgui-rs: ImGui 的 Rust 绑定
仍然相当实验性!
最低 Rust 版本:1.20
ui.window(im_str!("Hello world"))
.size((300.0, 100.0), ImGuiCond::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.imgui().mouse_pos();
ui.text(im_str!("Mouse Position: ({:.1},{:.1})", mouse_pos.0, mouse_pos.1));
})
当前实现的功能
- 低级 API(imgui-sys)
- 用于与 Glium 项目轻松集成的渲染器(可选)
- 高级 API 的部分功能
- 将 null-terminated UTF-8 传递给 ImGui 的不错方式。大多数时候需要使用宏
im_str!
。有关更多信息和对这种设计的论证,请参阅 问题 #7 - imgui_demo.cpp 的部分功能以 Rust 重新实现,作为 API 使用示例(examples/test_window_impl.rs)
重要但尚未实现的功能
- 文档(rustdoc)
- 支持将自定义程序传递给 Glium 渲染器(例如,来自着色器缓存或自定义着色器)
核心设计问题及当前选择
- 闭包与 begin/end 对(当前选择:闭包)
- 可变引用与返回值(当前选择:可变引用)
- 传递 Ui<'ui> 与传递 &'ui Ui(当前选择:Ui<'ui>)
- 将 API 分割成更小的部分与在 Ui 中所有绘制调用(当前选择:在 Ui 中所有绘制调用)
- 可选参数的构建器模式与其它模式(当前选择:构建器)
- 构建器中的突变函数与构建器中的自消耗函数(当前选择:自消耗)
编译和运行演示
示例位于 imgui-examples 目录下。
git clone https://github.com/Gekkio/imgui-rs
cd imgui-rs
git submodule update --init --recursive
cd imgui-examples
cargo test
cargo run --example hello_world
cargo run --example test_window
cargo run --example test_window_impl
注意:Windows 用户:您需要使用 Rust 编译器的 MSVC ABI 版本及其相关 依赖项 来构建此库并运行示例。
如何贡献
-
更改或添加内容
-
运行 rustfmt 以保证代码风格符合规范
cargo install rustfmt cargo fmt -- --write-mode=overwrite
-
在 Github 上打开 pull request
许可证
以下任一许可证下授权
- Apache 许可证第 2 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您自行选择。
贡献
除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何旨在包含在作品中的贡献,均应双许可如上所述,不附加任何额外条款或条件。