1 个不稳定版本
| 0.1.3 | 2021 年 12 月 15 日 |
|---|
#875 in 图形API
78KB
2K SLoC
limelight-primitives
此 crate 实现了多个 2D 形状,可以使用 limelight 的 Renderer 绘制。
每个原语包含两部分:一个数据结构(如 Rect 或 Circle)代表发送到 GPU 的原始形状数据,以及一个实现 Drawable 并可以在传递一个 Renderer 实例时绘制自身的层(如 RectLayer 和 CircleLayer)。
所有层都可以绘制它们所代表的形状的多个实例。
use limelight_primitives::{Circle, CircleLayer};
use limelight::Renderer;
fn draw_circles(renderer: &Renderer) {
let circles = CircleLayer::new();
circles.buffer().set_data(vec![
Circle {
position: [0., 0.25],
radius: 0.2,
color: palette::named::WHITE.into(),
},
Circle {
position: [0., 0.25],
radius: 0.1,
color: palette::named::ORANGERED.into(),
},
]);
self.circles.draw(renderer)?;
}
.buffer() 方法返回相关类型的 Buffer,例如 RectLayer::buffer() 返回一个 Buffer<Rect>,您可以使用它来随时更新矩形数据。
层还公开了一个 Uniform<[[f32; 4]; 4]>,它充当点上的 变换矩阵。
原语
Circle:填充圆。Rect:填充矩形。Line:任意(缩放)厚度的直线。Hairline:厚度未缩放的轴对齐线(即厚度不随缩放级别变化;适用于网格和坐标轴)。
依赖项
~12MB
~231K SLoC