活塞的图形库提供了在两点之间绘制线条的功能,但是没有超过两点的功能。我如何有效地绘制通过许多点的路径,而不必为每个线段绘制线条?使用活塞高效地绘制路径
比方说,我有以下代码:
extern crate piston_window;
use piston_window::*;
fn main() {
let mut window: PistonWindow = WindowSettings::new("Hello Piston!", [640, 480])
.exit_on_esc(true).build().unwrap();
while let Some(e) = window.next() {
window.draw_2d(&e, |c, g| {
clear([1.0; 4], g);
let points = [
[100., 100.],
[200., 200.],
[150., 350.],
//...
];
let mut prev = points[0];
for pt in points[1..].iter() {
line([0., 0., 0., 255.], 1., [
prev[0], prev[1], pt[0], pt[1]
], c.transform, g);
prev = *pt;
}
});
}
}
有没有办法把它弄成这个样子?
extern crate piston_window;
use piston_window::*;
fn main() {
let mut window: PistonWindow = WindowSettings::new("Hello Piston!", [640, 480])
.exit_on_esc(true).build().unwrap();
while let Some(e) = window.next() {
window.draw_2d(&e, |c, g| {
clear([1.0; 4], g);
let points = [
[100., 100.],
[200., 200.],
[150., 350.],
//...
];
path([0., 0., 0., 255.], 1., &points, c.transform, g);
});
}
}
我被提到lyon库,但我不知道如何使用它与活塞。
如何绘制一条路径而不绘制每个段?什么是你的循环效率低下? – interjay
我正在寻找能够连续绘制所有分段而不必为每个单独分段发送绘图命令的内容。 –