#imgui #renderer #texture #glium #dear #bindings #imgui-glium-renderer

imgui-glium-renderer-filter

imgui-glium-renderer的分支,允许为每个纹理设置纹理过滤

1个不稳定版本

0.4.0 2020年6月30日

#359 in 渲染

MIT/Apache

16KB
394

imgui-rs:Dear ImGui的Rust绑定

仍然相当实验性!

最低Rust版本:1.40

包装的Dear ImGui版本:1.76

Build Status Documentation on docs.rs

Hello world

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 版本以及其相关的依赖项来构建此库并运行示例。

如何贡献

  1. 更改或添加内容

  2. 确保您使用的是最新的稳定版Rust

  3. 运行 rustfmt 以确保代码风格符合规范

    rustup component add rustfmt
    cargo fmt
    
  4. 在 Github 上打开一个拉取请求

许可证

根据您选择,许可如下

任选其一。

使用 Dear ImGuicimgui

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交给作品中的任何贡献都应双重许可如上所述,不附加任何额外条款或条件。

依赖项

~18MB
~341K SLoC