#cross-platform-gui #window #ui #graphics #game

open_ui

🕹 使用Rust构建跨平台GUI应用

5个稳定版本

1.4.0 2022年8月11日
1.3.1 2022年7月18日
1.3.0 2022年7月17日
1.2.0 2022年7月17日
1.1.1 2022年7月17日

渲染类别中排名第280

自定义许可证

34KB
804 代码行

欢迎!👋

OpenUI 是一个面向开发者的Rust库,用于创建跨平台GUI应用。对于那些不想直接使用 OpenGL 或类似 GlutinGlium 的封装库,以及不需要完整桌面Web框架如 ElectronTauri 的人来说,这是一个很好的选择。

亲自尝试!🕹

尝试OpenUI示例项目非常简单,这是一个80年代风格的 贪吃蛇游戏。使用箭头键和空格键进行游戏。

git clone [email protected]:craigfay/open_ui.git && cd open_ui
cargo run

开发者安装 💽

在任意的Cargo项目中将OpenUI添加为依赖项

# Cargo.toml
[dependencies]
open_ui = "*"

使用OpenUI构建您的应用 🧱

要创建一个渲染UI的Rust程序,只需定义一个实现 UIController 接口的struct

use open_ui::UIController;

// Define a struct to hold your application data
struct SnakeGame {};


// Implement the `UIController` interface to define application behavior
impl UIController for SnakeGame {

    fn blueprint(&self) -> UIBlueprint {
        // This function wil be called once before the application opens,
        // and determines the initial settings of the rendering window.
    }

    fn next_frame(&mut self) -> Option<&RgbaImage> {
        // This function will be called called every frame,
        // and returns the contents of the next render-able frame,
        // or `None` if the application should terminate.
    }

    fn process_events(&mut self, events: &Vec<UIEvent>) {
        // This function will be called every frame, receiving
        // input events, and usually responding by modifying state.
    }
}

然后,将那个struct的实例传递给 UI::launch()

use open_ui::UI;

fn main() {
    let application = SnakeGame::new();
    UI::launch(application);
}

注意事项

OpenUI在CPU上完成所有工作,并且(目前)没有尝试利用GPU加速。这意味着它可能不适合涉及逼真3D渲染的工作负载。但话说回来,OpenUI完全能够处理现代机器上的几乎所有2D图形工作负载。

资源 📖

依赖项

~7–11MB
~214K SLoC