首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

imgui-rs-Rust下的Dear ImGui binding

本期的每周一库带来的是imgui-rs,是一个Rust下的Dear ImGui binding,从名字不难看出,这是一个GUI框架的库

下面我们主要参考imgui-rs的Github内容开始本期的内容

Github: imgui-rs: Rust bindings for Dear ImGui

按照Github页面上的介绍,imgui-rs还是一个处于实验阶段的库,最小Rust版本需求为1.38

同时Github上也给出了一段示例代码供大家理解:

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]

));

});

特性

绑定了Dear ImGui,从而可是在Rust下使用。

Builder结构使用原始C++库中对于参数的处理办法

使用&ImStr/ImString类型和im_str给Dear ImGui传递参数,不接受Rust下的&str/string类型

更方便的和Glium/pre-ll gfx渲染器集成

更方便和winit后端集成

后端程序和渲染器的选择

基本上所有使用imgui-rs的应用需要另外两个附加的组件,一个是后端程序,一个是渲染器

后端程序负责集成imgui-rs到操作系统和窗口管理,它的职责包括:

处理输入事件(例如:键盘,鼠标),并根据时间来更新imgui-rs的状态

传递窗体信息(例如:尺寸,DPI)

更新操作系统测的光标

渲染器的职责主要是处理imgui-rs生成的draw list,通过一些图形API把这些请求进行可视化处理,具体包含:

渲染多边形和顶点数据

处理DPI和scissor rects

贴图管理

最常用的经过测试的搭配是imgui-glium-renderer+glium+imgui-winit-support+winit。但这并不是唯一的搭配方案。例如还可以使用imgui-gfx-renderer。还有好多第三方的库也提供了支持(例如OpenGL, SDL2)。你甚至可以根据需要自己实现一些渲染方法。

编译和运行例子

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

实际运行效果

通过命令cargo run --example hello_world运行结果:

通过命令cargo run --example test_window运行结果:

通过命令cargo run --example test_window运行结果:

到这里就是本期每周一库的全部内容

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200313A0EK9300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券