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§
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)
sourcefn clear(&self)
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
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
}