#screen #platform #input #pixel #image #onto #regardless

leafrender

LeafRender 是一个简单易用的库,可以将像素直接显示在屏幕上,不受平台限制。

1 个不稳定版本

0.1.0 2019年5月25日

#690GUI

Apache-2.0

77KB
1.5K SLoC

LeafRender

LeafRender 是一个简单易用的库,可以将像素直接显示在屏幕上,不受平台限制。

支持 Windows、Linux 和 Raspberry Pi。

其他库通常需要大量的引导过程,这对于 WIP 或业余项目来说没有意义。

还包含了对图像格式和输入的一些支持。

Kitchensink Example

基本用法

在您的 Cargo.toml 中导入 crate(假设 Windows/Linux OpenGL)

leafrender = "0.1.0"

在您的代码中,可以使用如下内容

use leafrender::input::Input;
use leafrender::render::Drawer;
use leafrender::pos::Rect;
use leafrender::render::Color;
use leafrender::PlatformDrawer;
use leafrender::PlatformInput;

let mut drawer = PlatformDrawer::new("LeafRender Test", 640, 480)
       .expect("Failed to create drawer");
let mut input = PlatformInput::new();

while {
   input.update(&mut drawer);
       input.do_continue()
} {
    drawer.start();
    drawer.clear(false);
    drawer.enable_blending(); // Enable partial transparency.
                              // Left disabled by default for e.g. Pi

    drawer.draw_colored_rect(
        &Rect {
            x: 100,
            y: 100,
            width: 50,
            height: 50,
        },
        &Color {
            r: 255,
            g: 0,
            b: 0,
            a: 255,
        }
    );

    drawer.end();
}

更多示例

需要一些文本吗?

use crate::render::font::FontCache;
use crate::pos::Position;

let mut font = FontCache::from_bytes(include_bytes!("Lato-Regular.ttf"))
                .expect("Unable to load font");

// [...]
// Inside your main loop, ensuring that blending is enabled (simple example above):

font.draw(
   "Hello, World!",
   &Color {
       r: 0,
       g: 0,
       b: 0,
       a: 255,
   },
   12,
   &Position {
       x: 50,
       y: 50,
   },
   &mut drawer
;

或者一个图像?

use image; // image crate

let image = image::load_from_memory(include_bytes!("img.jpg"))
                .expect("Failed to load image")
                .to_rgba();
let image = drawer.convert_image(&image);

// [...]
// Inside your main loop, ensuring that blending is enabled (simple example above):

drawer.draw_texture(&image, &Position {
    x: 150,
    y: 150,
});

特性

  • 绘制矩形、着色顶点
  • 使用 rusttype 绘制字体
  • 使用 image 绘制图像
  • 基本输入处理(鼠标)

愿望清单

  • 更完整的输入处理(键盘)
  • 清理一些错误处理边缘情况
  • 清理一些安全性问题

非特性

  • 3D(这里控制太多)
  • 自定义着色器

许可

LeafRender 根据 Apache 2.0 许可证授权,可在 此处 获取。

依赖

~5–14MB
~163K SLoC