#嵌入式图形 #显示 #帧缓冲区 #屏幕 #像素 #DMA #生态系统

embedded-graphics-framebuf

嵌入式图形帧缓冲区辅助工具

7个版本 (破坏性更新)

0.5.0 2023年7月17日
0.4.0 2023年6月4日
0.3.0 2023年6月3日
0.2.0 2022年9月2日
0.0.2 2022年2月22日

#172 in 图形API

Download history 62/week @ 2024-03-11 20/week @ 2024-03-18 54/week @ 2024-04-01 15/week @ 2024-04-08 23/week @ 2024-04-15 38/week @ 2024-04-22 16/week @ 2024-04-29 27/week @ 2024-05-06 23/week @ 2024-05-13 38/week @ 2024-05-20 42/week @ 2024-05-27 53/week @ 2024-06-03 25/week @ 2024-06-10 26/week @ 2024-06-17 31/week @ 2024-06-24

每月138次下载

MIT 许可证

29KB
410

Contributors Forks Stargazers Issues Build Status MIT License LinkedIn


Embedded graphics logo

Rust的嵌入式图形帧缓冲区实现

文档

Crates.io · 报告错误 · 功能请求

关于项目

这个 Rust 库是 嵌入式图形 生态系统中的帧缓冲区方法的实现。目标是一次性批量写入所有屏幕像素,而不是对单独的原始数据执行多个更新。

在多个操作中进行图形合成并在显示上进行直接更新可能导致闪烁,并且清除屏幕上的先前内容更困难。帧缓冲区通过在内存中的显示上绘制来帮助处理这个问题,因此最终显示图像可以一次推送到您的硬件显示。

当您需要更新屏幕的大部分区域或根本不希望处理部分显示更新时,这种技术非常有用,但它以更高的RAM使用量和更多流向显示器的流量为代价。此crate还具有DMA支持,可以增强较大显示更新的性能。

入门

确保您的 rust 环境已配置

安装

  1. 将库添加到您的 Cargo.toml

    [dependencies]
    embedded-graphics-framebuf = "0.5.0"
    
  2. 在您的代码中使用库

    use embedded_graphics_framebuf::FrameBuf;
    
    // ...
    
    // Backend for the buffer
    let mut data = [BinaryColor::Off; 12 * 11];
    let mut fbuf = FrameBuf::new(&mut data, 12, 11);
    
    // You would use a "real" display here...
    let mut display: MockDisplay<BinaryColor> = MockDisplay::new();
    Line::new(Point::new(2, 2), Point::new(10, 2))
        .into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 2))
        .draw(&mut fbuf)
        .unwrap();
    // Write it all to the display
    let area = Rectangle::new(Point::new(0, 0), fbuf.size());
    display.fill_contiguous(&area, data).unwrap();
    
  3. 到这一点为止,您的闪烁问题应该已经解决了 :)

路线图

  • 添加测试
  • 添加rustdocs
  • 与GitHub Actions集成CI
  • 更好的错误生成和处理

有关提议的功能(以及已知问题的)的完整列表,请参阅 开放问题

许可证

在MIT许可证下分发。有关更多信息,请参阅 LICENSE

联系

伯纳德·科博斯 - @bkobos - [email protected]

约纳塔恩 - jounathaen at mail dot de

项目链接: https://github.com/bernii/embedded-graphics-framebuf

致谢

依赖项

~3.5MB
~35K SLoC