#2d-graphics #graphics #cpu #software-render

无std prisma2d

仅软件的2D图形库

1个不稳定版本

0.1.0 2023年11月20日

#364图形API

MIT 许可证

23KB
313

Prisma2D:超快CPU 2D图形

License Repo Size

Prisma2D是一个快速、高效且极简的库,用于CPU上的基本2D图形。对于Rust。使用Prisma2D,无论您是在构建游戏、模拟还是任何图形密集型应用程序,您都可以充分利用每一点处理能力,以高效地绘制您想要的任何内容在屏幕上!

功能

  • 🦀 无依赖:Prisma2D可以在没有任何依赖的情况下使用(甚至不是std!)!这在您在一个非常受限的环境中工作时非常有用,例如底层图形。它也永远不依赖于任何图形硬件,并且所有逻辑都在CPU上运行。

  • 🚀 核心效率:Prisma2D是为了速度而设计的,能够每秒绘制数百万个像素,而毫不费力。它经过优化,可以轻松处理最苛刻的图形任务。由于使用高效的算法和广泛的优化,您的原语可以以近乎即时的结果进行渲染。

  • 🖌️ 像素完美:轻松实现像素完美。Prisma2D提供了对像素的精确控制,允许您创建清晰、清晰的图形,并对每个像素进行绝对控制。

入门

  • 将Prisma2D添加到您的Cargo.toml
[dependencies]
prisma2d = "0.1.0"
  • 绘制任何东西(更多信息请参阅示例
use prisma2d::{
    line::Line,
    point::Point,
    color::Color,
};

fn main() {
    /* Create your framebuffer here. You can use a crate like 'pixels' */
    let framebuffer = Vec::<u8>::new();
    let line = Line::new(
        Point { x: 50, y: 200 },
        Point { x: 150, y: 200 },
        Color::default(), // White color by default
    )
    line.draw();
}

待办事项

  • 线条
  • 像素
  • 顶点
  • 示例
  • 图像
  • 多线程
  • 辅助函数
  • 矩形
  • 填充
  • 渐变

常见问题解答

  • 这个支持x吗?
    是的,可能支持,因为大多数操作系统都使用(共享)帧缓冲区来显示窗口的内容,这是Prisma2D想要渲染的。

  • 这个与其他库相比如何?
    在您得到答案之前,您必须理解这个库处于早期开发阶段,即使是非常基本的功能也缺失,因此我现在不会考虑这个因素。

  • tiny-skia足够接近,考虑到它的发展时间,它可以满足Prisma2D提供的功能的大部分。(待办事项:基准测试)
  • cairo 是一个 C 库,因此它可以轻松绕过 Rust 的安全性强制,尽管它很稳定并且已经被用于许多其他库。
  • skia 是一个 C++ 库(这意味着你根本不能从其他语言中使用它),而且它非常大(编译它可能需要数小时和数GB的空间),更不用说生成的库空间大约为 5MB。

本质上,这个包试图在你的代码库的一个小角落里找到一个位置,而大多数包试图完全控制你的图形渲染。

  • 它这么小,为什么还要自己手动重写呢?
    你将浪费几天时间重写这个包,而这些时间本可以用来投入到你的实际应用或库中。此外,你还需要从头学习一些概念,只是为了重新发明轮子。

  • 我想有 x,请添加它。
    代码在这里,pull requests 在那里,创建一个并添加你想要的任何内容。如果你不知道如何实现 x,请打开一个 issue

贡献

我们欢迎贡献!无论是错误报告、功能请求还是代码贡献,每一份努力都很有帮助。查看我们的贡献指南以开始。

Prisma2D 采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。

依赖项

~0–265KB