3 个版本
0.1.2 | 2021 年 8 月 30 日 |
---|---|
0.1.1 | 2021 年 7 月 26 日 |
0.1.0 | 2021 年 7 月 26 日 |
#116 in 渲染
200KB
5K SLoC
nonaquad
基于 Rust 的 Android、WASM、桌面矢量抗锯齿图形渲染器,使用 miniquad。
这个库最初是将 NanoVG 移植到 miniquad 的项目。如果您想快速实验(游戏、绘画应用程序等)或者想在上面构建其他库(例如 UI 库),请使用此库。
目标
- 移动、桌面和 Web 的小型快速可执行文件。
- 安全性
- 高质量的绘图:着色器中的抗锯齿、圆角矩形、渐变、快速模糊
- 所有平台上一键或直接构建
- 易于使用
- 最小依赖项
支持的平台
- Windows,OpenGl 3
- Linux,OpenGl 3
- macOS,OpenGL 3
- WASM,WebGl1 - 在 ios safari、ff、chrome 上测试过
- Android,GLES3
不支持但希望支持的平台
- Android,GLES2 - 进行中。
- Metal。非常希望。
- 树莓派 - 进行中
示例
从以下示例开始: cargo run --example drawaa
nona.begin_path();
nona.rect((100.0, 100.0, 300.0, 300.0));
nona.fill_paint(nona::Gradient::Linear {
start: (100, 100).into(),
end: (400, 400).into(),
start_color: nona::Color::rgb_i(0xAA, 0x6C, 0x39),
end_color: nona::Color::rgb_i(0x88, 0x2D, 0x60),
});
nona.fill().unwrap();
let origin = (150.0, 140.0);
nona.begin_path();
nona.circle(origin, 64.0);
nona.move_to(origin);
nona.line_to((origin.0 + 300.0, origin.1 - 50.0));
nona.stroke_paint(nona::Color::rgba(1.0, 1.0, 0.0, 1.0));
nona.stroke_width(3.0);
nona.stroke().unwrap();
nona.end_frame().unwrap();
屏幕截图
从上述示例生成的屏幕截图。
Windows
Web
在 size stripping 之前 WASM 的大小为 640KB - 应该足够每个人使用。
Android
APK 大小:134KB
iOS
(尚未准备就绪)
构建
Linux
# ubuntu system dependencies
apt install libx11-dev libxi-dev libgl1-mesa-dev
cargo run --example drawaa
Windows
# both MSVC and GNU target is supported:
rustup target add x86_64-pc-windows-msvc
# or
rustup target add x86_64-pc-windows-gnu
cargo run --example drawaa
WASM
rustup target add wasm32-unknown-unknown
cargo build --example drawaa --target wasm32-unknown-unknown && copy ".\target\wasm32-unknown-unknown\debug\examples\drawaa.wasm" ".\examples\drawaa.wasm" /y
cd examples
npm i -g simplehttpserver
simplehttpserver
然后打开 https://127.0.0.1:8000
Android
推荐用于 Android 的构建方式是使用 Docker。
miniquad 使用稍作修改的 cargo-apk
版本。
注意:在 Windows 上,如果在 cargo apk build --example drawaa
期间出现 git 错误,请更新您的 .git 文件夹以使其不是只读的。参见相关的 Docker 问题 #6016
docker run --rm -v $(pwd)":/root/src" -w /root/src notfl3/cargo-apk cargo apk build --example drawaa
docker run -it -v %cd%":/root/src" -w /root/src notfl3/cargo-apk bash
APK 文件将位于 target/android-artifacts/(debug|release)/apk
启用“log-impl”功能后,所有日志调用都将转发到adb控制台。无需对Android进行代码修改,一切正常工作。
iOS
尚未支持
路线图
nvg-miniquad的目标是在移动、Web和桌面端使用相同的源代码构建一个稳定、高质量的矢量库。
我将将其用作通用跨平台应用框架的构建模块。
功能
- 抗锯齿线、圆、矩形、圆角矩形(有符号距离场)、曲线
- 多边形 - 凸和凹
- 渐变
- 裁剪
- 抗锯齿文本
- [进行中] 图像和纹理
- 高质量快速阴影和模糊
- 渐变 - 高质量抖动
- 圆球
架构
这就是各个部分如何组合在一起
贡献
请参阅源代码中的TODO-s或任何其他内容
许可证
MIT或Apache,任选其一
依赖项
约20MB
~228K SLoC