5个版本
0.2.3 | 2022年6月19日 |
---|---|
0.2.2 | 2020年12月11日 |
0.2.1 | 2020年3月1日 |
0.2.0 | 2019年9月16日 |
0.1.0 | 2019年8月25日 |
#91 在 渲染
每月266次下载
用于 fpgrars
32KB
568 行
像素画布
该库旨在通过像素缓冲区轻松构建交互式计算机艺术。为了获得灵感,可以考虑查看 https://shadertoy.com 和 http://www.iquilezles.org/www/index.htm,那里有很多有趣的艺术作品和技巧的解释!
使用方法
要制作一件艺术品,您需要创建和配置一个 Canvas
对象,然后请求它使用您的代码进行 render
。画布将进行状态管理,并给您一个可以修改的图像。您对图像所做的任何修改都将显示在屏幕上。
示例
use pixel_canvas::{Canvas, Color, input::MouseState};
fn main() {
// Configure the window that you want to draw in. You can add an event
// handler to build interactive art. Input handlers for common use are
// provided.
let canvas = Canvas::new(512, 512)
.title("Tile")
.state(MouseState::new())
.input(MouseState::handle_input);
// The canvas will render for you at up to 60fps.
canvas.render(|mouse, image| {
// Modify the `image` based on your state.
let width = image.width() as usize;
for (y, row) in image.chunks_mut(width).enumerate() {
for (x, pixel) in row.iter_mut().enumerate() {
let dx = x as i32 - mouse.x;
let dy = y as i32 - mouse.y;
let dist = dx * dx + dy * dy;
*pixel = Color {
r: if dist < 128 * 128 { dy as u8 } else { 0 },
g: if dist < 128 * 128 { dx as u8 } else { 0 },
b: (x * y) as u8,
}
}
}
});
}
或运行一个包含的示例(使用nightly)
cargo +nightly run --example api_example
许可证:MIT OR Apache-2.0
依赖关系
~7–11MB
~214K SLoC