1个不稳定版本
0.1.0 | 2023年9月25日 |
---|
475 在 图形API 中
315KB
4K SLoC
这是将WPF硬件光栅化器代码移植到Rust的版本。该光栅化器是Direct2D光栅化器的先驱。Direct2D在不支持独立光栅化的硬件上运行时仍然使用类似的技术。
设计
光栅化使用的一般算法是对形状进行垂直扫描,保持一个活动的边缘列表。扫描在子扫描线分辨率下进行,结果产生以下几种情况:
- 在覆盖缓冲区中将子扫描线合并,并输出为“复杂扫描”。这些作为由三角形带构成的线条输出。
- 在活动边缘列表中识别出简单的梯形,并使用更快的简单梯形路径输出。
使用向前差分误差度量法来计算一个平铺版本的方法,该方法将匹配传统的自适应递归平铺。
lib.rs
:
将2D路径转换为表示该路径抗锯齿填充的三角形带网格的顶点集。
use wpf_gpu_raster::PathBuilder;
let mut p = PathBuilder::new();
p.move_to(10., 10.);
p.line_to(40., 10.);
p.line_to(40., 40.);
let result = p.rasterize_to_tri_list(0, 0, 100, 100);