#svg #svg-parser #graphics #tiny-vg #evg #blend2-d #vector-graphic

bin+lib intvg

lib/tool 用于加载/保存/渲染 tvg 文件,通过 usvg 从 svg 文件解析

7 个版本

0.1.7 2024 年 6 月 14 日
0.1.6 2024 年 6 月 5 日
0.1.5 2024 年 5 月 29 日
0.1.3 2023 年 8 月 8 日

#74 in 渲染引擎

每月 47 次下载
用于 inlottie

MIT/Apache

475KB
3K SLoC

Build status codecov Crates.io dependency status License: MIT

另一个 Rust 的 TinyVG 图像解析器 & 渲染器

一个库/工具,用于加载/保存二进制 .tvg 文件,使用 tiny-skia 渲染到 .png 文件,使用 usvg 从 .svg 文件解析,具有最少的依赖项,简单的 Rust 代码。

TinyVG 文本表示形式 (.tvgt) 仅用于调试/开发目的,可以通过 Rust 中的 #[derive(Debug)]println!("{:?}, commands)dbg!(commands) 实现此目的。

绑定 Blend2D 渲染引擎

通过功能 "b2d" 控制构建。

    (cd 3rdparty && ./layout.sh)    # just run once

    cargo r -F b2d -- <path-to-svg/tvg> [<path-to-tvg/png>]

一个内置的 Rust 对 Blend2D 的绑定,比过时的 blend2d-rs 更简单。

绑定 GPAC/EVG 2D 渲染引擎

通过功能 "evg" 控制构建。

    (cd 3rdparty && ./layout.sh)    # just run once

    cargo r -F evg -- <path-to-svg/tvg> [<path-to-tvg/png>]

内置的是公开的唯一一个 Rust 对 GPAC/EVG 的绑定。

基于 Femtovg 的 SVG 渲染器/查看器。

构建受功能 "nvg" 控制。

    cargo r -F nvg --bin nanovg -- <path-to-svg>

参考 Femotovg 中的 SVG 示例,更新、重写和优化了代码,增加了拖放支持。

另一个基于 HTML5/Web 2D Canvas API 的 SVG/TinyVG 查看器。

wcnvs 子crate/project 中运行以下命令以启动 Dioxus 开发服务器

dx serve --hot-reload

渲染性能比较

2D 引擎 计时 性能 注意
Femtovg 1.65 ms 606.8 fps 最高性能
Blend2D 1.94 ms 515.5 fps float/double
CanvasAPI 2.00 ms 500.0 fps 坏 T 精度?
tiny_skia 5.10 ms 195.9 fps
GPAC/EVG 7.96 ms 125.6 fps 浮点数
GPAC/EVG 18.07 ms 55.3 fps 定点数学

MacBook Pro 上用 Apple M1 Pro 测试渲染 Ghostscript_Tiger.svg

依赖关系

~4–25MB
~348K SLoC