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