1 个不稳定版本
0.1.0 | 2019年5月25日 |
---|
#690 在 GUI
77KB
1.5K SLoC
LeafRender
LeafRender 是一个简单易用的库,可以将像素直接显示在屏幕上,不受平台限制。
支持 Windows、Linux 和 Raspberry Pi。
其他库通常需要大量的引导过程,这对于 WIP 或业余项目来说没有意义。
还包含了对图像格式和输入的一些支持。
基本用法
在您的 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