1个不稳定版本
0.8.0 | 2022年2月27日 |
---|
#901 在 GUI
268 每月下载量
用于 arcdps
2.5MB
48K SLoC
imgui-rs:为arcdps插件提供的Dear ImGui 1.80 Rust绑定
这是一个分支
arcdps的插件仅限于使用较旧的Dear ImGui版本。这是一个与Dear ImGui 1.80兼容的imgui-rs 0.8.0分支,旨在供arcdps插件使用。
变更
- 允许从上下文中创建用于arcdps rust包装器的Ui对象
- 降级到Dear ImGui 1.80(arcdps当前使用的版本)
- 移除了需要ImGui新版本的API(主要是禁用API)
- 从imgui-rs >0.8.0中挑选了一些重要的修复,主要与
input_text
小部件未正确调整缓冲区大小和段错误有关。 - 文本输入回调API(字符过滤器)已更改为支持16位字符,因为arcdps ImGui版本没有启用32位字符支持。
原始README
Window::new("Hello world")
.size([300.0, 100.0], Condition::FirstUseEver)
.build(&ui, || {
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:高级安全API
- imgui-winit-support:使用
winit
crate的后端平台实现(默认使用最新版本,但通过功能标志支持早期版本) - imgui-glow-renderer:使用
imgui
crate的渲染器实现 - imgui-glium-renderer:使用
glium
crate的渲染器实现 - imgui-sys:低级非安全API(自动生成)
此外,以下不再维护,但可能仍然有效
- imgui-gfx-renderer:使用
gfx
crate的渲染器实现(不是新的gfx-hal crate)
功能
- 用于与安全Rust一起使用的Dear ImGui绑定。注意:API覆盖率不是100%,但会随着时间的推移不断改进。
- 用于原始C++库使用可选函数参数的场景的Builder结构体
- 轻松与
glow
/glium
集成 - 轻松与winit(后端平台)集成
- 可选支持freetype字体光栅化器
最小支持Rust版本(MSRV)
imgui-rs
和所有后端Crates的MSRV是1.54。我们定期更新我们的MSRV,并为其发布小版本更新。
选择后端平台和渲染器
几乎每个使用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-glow-renderer
,它将越来越多地取代 glium
,并且你可以找到提供更广泛库支持的第三方包(例如原始 OpenGL、SDL2)。如果你有更复杂的使用案例,你也可以编写自己的支持代码,因为 imgui-rs 并不绑定到任何特定的图形/操作系统 API。
编译和运行演示
git clone https://github.com/imgui-rs/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 gfx_hello_world
cargo run --example gfx_test_window
注意 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 许可协议定义,应作为上述双重许可,不附加任何额外条款或条件。