Render

Trait 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    fn run(&mut self, dt: f32, render: &mut Self::Render) -> bool {
24        render.begin();
25        render.clear_color(Vec4::new(0.3, 0.4, 0.4, 1.0));
26        render.clear();
27
28        for pos in &self.positions {
29            render.draw_cube(*pos);
30        }
31
32        render.end();
33        true
34    }
More examples
Hide additional examples
examples/canvas.rs (line 31)
20    fn run(&mut self, dt: f32, render: &mut Self::Render) -> bool {
21        let speed = 80.0 * dt;
22        self.time = self.time + (dt * 30.0);
23        if cafe::keyboard::is_down(Scancode::Left) {
24            self.pos -= Vec2::new(speed, 0.0);
25        }
26        else if cafe::keyboard::is_down(Scancode::Right) {
27            self.pos += Vec2::new(speed, 0.0);
28        }
29        render.begin();
30        render.set_clear_color(Color::black());
31        render.clear();
32
33        render.set_canvas(Some(&self.canvas));
34        render.clear();
35        render.draw_rect(&Rect::new(self.pos.x, self.pos.y, 32.0, 64.0));
36        // render.hello_triangle();
37        render.set_canvas(None);
38
39        render.blit(&self.canvas, None, 0.0, 0.0);
40        render.blit_rotate(&self.canvas, None, 32.0, 64.0, self.time); 
41        render.fill_circle(32.0, 64.0, 8.0);
42        render.hello_triangle();
43
44        render.end();
45        true
46    }

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§