40 个版本
0.12.0 | 2024年5月5日 |
---|---|
0.11.0 | 2023年4月5日 |
0.10.0 | 2023年1月16日 |
0.9.0 | 2022年11月30日 |
0.0.5 | 2015年11月30日 |
#40 in GUI
6,595 每月下载量
在 84 个 crates (81 直接) 中使用
12MB
224K SLoC
imgui-rs:Dear ImGui 的 Rust 绑定
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]
));
});
主要库 crates
imgui-rs 的核心包括
接下来,我们提供了两个示例渲染器和两个示例后端平台实现
imgui-winit-support
:使用winit
crate 的后端平台实现imgui-sdl2-support
:使用 SDL2 的后端平台imgui-glow-renderer
:使用glow
crate 的渲染器实现imgui-glium-renderer
:使用glium
crate 的渲染器实现
这些实现中都包含一个 examples
文件夹,展示了它们的用法。检查各自的 Cargo.toml
以找到兼容版本(例如,imgui-glow-renderer/Cargo.toml
中的 [dependencies]
描述了兼容的 glow
版本,而 [dev-dependencies]
描述了兼容的 glutin
版本)
最后,imgui-examples
文件夹包含了如何使用 imgui
包的示例 - 这包括如何显示文本、如何创建按钮等通用主题 - 并且适用于任何后端/渲染器的使用。
功能
- 适用于安全 Rust 的 Dear ImGui 绑定。注意:API 覆盖率不是 100%,但会随着时间的推移而不断提高。
- 用于原始 C++ 库使用可选函数参数的用例的构建器结构体
- 易于与
glow
/glium
集成 - 易于与 winit 和 sdl2(后端平台)集成
- 可选支持 freetype 字体光栅化和停靠分支
最小支持 Rust 版本 (MSRV)
imgui-rs
和所有后端包的 MSRV 是 1.70。我们定期更新我们的 MSRV,并对其进行小幅度升级。
选择后端平台和渲染器
几乎每个使用 imgui-rs 的应用程序除了主要的 imgui
包外,还需要两个额外的组件:后端平台和渲染器。
imgui-rs 与任何特定的渲染器或平台无关。
后端平台负责将 imgui-rs 集成到操作系统及其窗口管理中。其职责包括以下内容
- 处理输入事件(例如键盘、鼠标)并根据需要更新 imgui-rs 状态
- 将操作系统窗口的信息(例如大小、DPI 因子)传递给 imgui-rs
- 当 imgui-rs 请求时更新操作系统端鼠标光标
渲染器负责将 imgui-rs 生成的通用、渲染器无关的 绘制列表 使用某些图形 API 进行渲染。其职责包括以下内容
- 使用顶点/索引缓冲区和命令列表进行渲染
- 处理 DPI 因子和剪裁矩形
- 纹理管理
我们提供以下渲染器作为官方来源(即,它们将始终保持最新并正常工作):imgui-glow-renderer
和 imgui-glium-renderer
。
此外,我们还提供以下后端作为官方来源(即,它们将始终保持最新并正常工作):imgui-winit-support
和 imgui-sdl2-support
。
最经过测试的平台/渲染器组合是 imgui-glium-renderer
+ glium
+ imgui-winit-support
+ winit
,但这不是唯一可能的组合。还有 imgui-glow-renderer
,它将越来越多地取代 glium
。
此外,还有其他库提供了其他类型的渲染器,它们可能与 imgui-rs
发布的版本不兼容,但可能适用于您的用例
imgui-wgpu
imgui-d3d12-renderer
imgui-dx11-renderer
imgui-gfx-renderer
:已弃用(不再维护超过 imgui-rs v0.8)。使用gfx
包的渲染器实现(不是新的 gfx-hal 包)- 还有更多可以在 crates.io 上找到,无论是通过搜索还是通过 “依赖”页面(“依赖于”文本表示包是否已针对 imgui-rs 的当前版本进行更新)
如果您有更高级的用例,也可以编写自己的支持代码,因为 imgui-rs 不依赖于任何特定的图形 / OS API。
编译和运行演示
git clone https://github.com/imgui-rs/imgui-rs
cd imgui-rs
主要示例位于 imgui-examples
目录中。这些可以按以下方式运行
# At the reposity root
cargo test
cargo run --example hello_world
cargo run --example test_window
cargo run --example test_window_impl
Glow 渲染器的示例位于 imgui-glow-renderer/examples/
目录下。这些可以像任何其他示例一样运行
cargo test
cargo run --example glow_01_basic
注意:Windows用户需要使用Rust编译器的MSVC ABI版本及其关联的依赖项来构建此库并运行示例。
如何贡献
-
更改或添加内容
-
确保您使用的是最新的稳定版Rust
-
运行rustfmt以确保代码风格符合规范
rustup component add rustfmt cargo fmt
-
在Github上提交一个pull request
许可证
以下任一许可证下许可:
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您选择。
使用 Dear ImGui 和 cimgui。
贡献
除非您明确声明,否则您提交的任何旨在包含在作品中的贡献,如Apache-2.0许可证所述,应按照上述方式双重许可,不附加任何额外条款或条件。