1个不稳定版本
0.4.0 | 2020年6月30日 |
---|
#359 in 渲染
16KB
394 行
imgui-rs:Dear ImGui的Rust绑定
仍然相当实验性!
最低Rust版本:1.40
包装的Dear ImGui版本:1.76
Window::new(im_str!("Hello world"))
.size([300.0, 100.0], Condition::FirstUseEver)
.build(&ui, || {
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(format!(
"Mouse Position: ({:.1},{:.1})",
mouse_pos[0], mouse_pos[1]
));
});
主要库包
- imgui:高级安全API
- imgui-glium-renderer:使用
glium
包的渲染器实现 - imgui-gfx-renderer:使用
gfx
包的渲染器实现(不是新的gfx-hal包) - imgui-winit-support:使用
winit
包的后端平台实现(默认为0.22,但通过功能标志支持0.19-0.21) - imgui-sys:低级非安全API(自动生成)
特性
- 用于安全Rust的Dear ImGui绑定。注意:API覆盖率不是100%,但会随着时间的推移不断改进。
- 用于原始C++库使用可选函数参数的场景的构建器结构体
&ImStr
/ImString
类型和im_str!
宏用于定义和传递null终止的UTF-8到Dear ImGui,因为Dear ImGui不接受Rust的&str
/String
值。有关更多信息,请参阅问题#7和此设计的理由。- 与Glium / pre-ll gfx(渲染器)的简单集成
- 与winit(后端平台)的简单集成
选择后端平台和渲染器
几乎每个使用imgui-rs的应用程序都需要两个额外的组件,除了主要的imgui
包外:后端平台和渲染器。
后端平台负责将imgui-rs与操作系统及其窗口管理器集成。其职责包括以下内容
- 处理输入事件(例如键盘、鼠标)并根据需要更新imgui-rs状态
- 将有关操作系统窗口(例如大小、DPI因子)的信息传递给imgui-rs
- 当imgui-rs请求时,更新操作系统侧的鼠标光标
渲染器负责接收imgui-rs生成的通用、渲染器无关的绘制列表,并使用某些图形API进行渲染。其职责包括以下内容
- 使用顶点/索引缓冲区和命令列表进行渲染
- 处理DPI因素和裁剪矩形
- 纹理管理
最常测试的平台/渲染器组合是 imgui-glium-renderer
+ glium
+ imgui-winit-support
+ winit
,但这不是唯一的可能组合。还有 imgui-gfx-renderer
,并且你可以找到提供更广泛库支持的第三方crate(例如原始OpenGL、SDL2)。如果你有更高级的使用场景,你也可以编写自己的支持代码,因为 imgui-rs 不绑定到任何特定的图形/操作系统API。
编译和运行示例
git clone https://github.com/Gekkio/imgui-rs
cd imgui-rs
git submodule update --init --recursive
主要示例位于 imgui-examples 目录。
# At the reposity root
cd imgui-examples
cargo test
cargo run --example hello_world
cargo run --example test_window
cargo run --example test_window_impl
gfx后端的示例位于 imgui-gfx-examples 目录。
cd imgui-gfx-examples
cargo test
cargo run --example hello_world
cargo run --example test_window
注意Windows用户:您需要使用 Rust 编译器的 MSVC ABI 版本以及其相关的依赖项来构建此库并运行示例。
如何贡献
-
更改或添加内容
-
确保您使用的是最新的稳定版Rust
-
运行 rustfmt 以确保代码风格符合规范
rustup component add rustfmt cargo fmt
-
在 Github 上打开一个拉取请求
许可证
根据您选择,许可如下
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
使用 Dear ImGui 和 cimgui。
贡献
除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交给作品中的任何贡献都应双重许可如上所述,不附加任何额外条款或条件。
依赖项
~18MB
~341K SLoC