如何在 SDL2 的 rust 绑定中管理和呈现曲面?

How do I manage and present a surface in SDL2's rust bindings?

提问人:Manuel 提问时间:11/8/2023 更新时间:11/8/2023 访问量:27

问:

我正在尝试编写一个用作白板的程序。但是,随着我继续画画,程序必须跟踪越来越多的点,这会减慢程序的速度并导致其滞后。

我想尝试保持帧的先前状态,并且只绘制我添加的任何新点。

这是我的程序的骨架:

#[derive(Copy, Clone, PartialEq, Eq)]
struct Center {
    point: Point,
    radius: i32,
}

fn main() {
//...
    let mut canvas = window.into_canvas().build().unwrap();
    let mut points: Vec<Center> = Vec::new();

    'running: loop {
        for event in event_pump.poll_iter() {
            match event {
// other events here, like quit
                Event::MouseMotion {
                    x, y, mousestate, ..
                } => 'draw: {
                    // here, I add new points if the mouse is held
        }
        canvas.set_draw_color(Color::RGB(255, 255, 255)); // make the background white
        canvas.clear();

        canvas.set_draw_color(Color::RGB(0, 0, 0));
        draw_centers(&mut canvas, &points);
        canvas.present();

}

我试过不调用每一帧,但这只会使整个窗口变黑。canvas.clear()

迹 SDL-2

评论

0赞 frankenapps 11/8/2023
尝试在循环之前调用。canvas.set_draw_color(Color::RGB(255, 255, 255))canvas.clear()
0赞 Manuel 11/9/2023
不幸的是,我已经尝试过了,但它不起作用。
0赞 Chayim Friedman 11/9/2023
我想,你不能清除画布。
0赞 Manuel 11/10/2023
@ChayimFriedman不幸的是,这也行不通。

答: 暂无答案