Trait cafe::render::Render

source ·
pub trait Render {
    type Effect: Effect;

    // Required methods
    fn new() -> Self;
    fn begin(&mut self);
    fn end(&self);
    fn camera(&mut self) -> &mut dyn Camera;
    fn set_canvas(&mut self, canvas: Option<&Canvas>);
    fn set_effect(&mut self, effect: Option<&Self::Effect>);
    fn on_resize(&mut self, width: i32, height: i32);

    // Provided methods
    fn clear_color(&self, color: Vec4) { ... }
    fn clear(&self) { ... }
}

Required Associated Types§

Required Methods§

source

fn new() -> Self

source

fn begin(&mut self)

source

fn end(&self)

source

fn camera(&mut self) -> &mut dyn Camera

source

fn set_canvas(&mut self, canvas: Option<&Canvas>)

source

fn set_effect(&mut self, effect: Option<&Self::Effect>)

source

fn on_resize(&mut self, width: i32, height: i32)

Provided Methods§

source

fn clear_color(&self, color: Vec4)

source

fn clear(&self)

Examples found in repository?
examples/cube.rs (line 26)
23
24
25
26
27
28
29
30
31
32
33
34
    fn run(&mut self, dt: f32, render: &mut Self::Render) -> bool {
        render.begin();
        render.clear_color(Vec4::new(0.3, 0.4, 0.4, 1.0));
        render.clear();

        for pos in &self.positions {
            render.draw_cube(*pos);
        }

        render.end();
        true
    }
More examples
Hide additional examples
examples/canvas.rs (line 31)
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    fn run(&mut self, dt: f32, render: &mut Self::Render) -> bool {
        let speed = 80.0 * dt;
        self.time = self.time + (dt * 30.0);
        if cafe::keyboard::is_down(Scancode::Left) {
            self.pos -= Vec2::new(speed, 0.0);
        }
        else if cafe::keyboard::is_down(Scancode::Right) {
            self.pos += Vec2::new(speed, 0.0);
        }
        render.begin();
        render.set_clear_color(Color::black());
        render.clear();

        render.set_canvas(Some(&self.canvas));
        render.clear();
        render.draw_rect(&Rect::new(self.pos.x, self.pos.y, 32.0, 64.0));
        // render.hello_triangle();
        render.set_canvas(None);

        render.blit(&self.canvas, None, 0.0, 0.0);
        render.blit_rotate(&self.canvas, None, 32.0, 64.0, self.time); 
        render.fill_circle(32.0, 64.0, 8.0);
        render.hello_triangle();

        render.end();
        true
    }

Implementors§