Got clear screen to display
! WIP, rendering code is fully temporary
This commit is contained in:
parent
4a65fb16b6
commit
599a998c51
@ -86,7 +86,7 @@ impl Canvas {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn clear(&mut self) {
|
pub fn clear(&mut self) {
|
||||||
self.renderer.clear(&self.clear_color);
|
todo!();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--Input functions--
|
//--Input functions--
|
||||||
|
|||||||
@ -24,7 +24,7 @@ pub fn run_canvas<A: 'static + Application>(title: &'static str, size: Size, mut
|
|||||||
let event_loop = EventLoop::new();
|
let event_loop = EventLoop::new();
|
||||||
let window = WindowBuilder::new()
|
let window = WindowBuilder::new()
|
||||||
.with_inner_size(size)
|
.with_inner_size(size)
|
||||||
.with_resizable(false)
|
//.with_resizable(false)
|
||||||
.with_title(title)
|
.with_title(title)
|
||||||
.with_visible(false) //keep window invisible until we are ready to write to it
|
.with_visible(false) //keep window invisible until we are ready to write to it
|
||||||
.build(&event_loop)
|
.build(&event_loop)
|
||||||
|
|||||||
106
src/main.rs
106
src/main.rs
@ -43,66 +43,66 @@ impl Application for ExampleApp {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// inputs
|
// inputs
|
||||||
if canvas.key_pressed(Key::A) {
|
//if canvas.key_pressed(Key::A) {
|
||||||
unimplemented!();
|
// unimplemented!();
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
if canvas.key_released(Key::A) {
|
//if canvas.key_released(Key::A) {
|
||||||
unimplemented!();
|
// unimplemented!();
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
match canvas.get_key_presses() {
|
//match canvas.get_key_presses() {
|
||||||
Key::A => unimplemented!(),
|
// Key::A => unimplemented!(),
|
||||||
_ => (),
|
// _ => (),
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
match canvas.get_key_releases() {
|
//match canvas.get_key_releases() {
|
||||||
Key::A => unimplemented!(),
|
// Key::A => unimplemented!(),
|
||||||
_ => (),
|
// _ => (),
|
||||||
}
|
//}
|
||||||
|
|
||||||
let _mouse = canvas.get_mouse_position();
|
//let _mouse = canvas.get_mouse_position();
|
||||||
|
|
||||||
// outputs
|
//// outputs
|
||||||
canvas.set_clear_color(Color::BLACK);
|
//canvas.set_clear_color(Color::BLACK);
|
||||||
canvas.clear();
|
//canvas.clear();
|
||||||
|
|
||||||
// white rectangle inset by one in the sprite
|
//// white rectangle inset by one in the sprite
|
||||||
let mut bas_sprite = canvas.create_shape_sprite();
|
//let mut bas_sprite = canvas.create_shape_sprite();
|
||||||
bas_sprite.set_shape(Shape::Rectangle (Rectangle {size: Size {w: 38, h: 38}}));
|
//bas_sprite.set_shape(Shape::Rectangle (Rectangle {size: Size {w: 38, h: 38}}));
|
||||||
bas_sprite.set_color(Color::WHITE);
|
//bas_sprite.set_color(Color::WHITE);
|
||||||
canvas.draw(&bas_sprite);
|
//canvas.draw(&bas_sprite);
|
||||||
|
|
||||||
// 20 x 20 sprite of a picture
|
//// 20 x 20 sprite of a picture
|
||||||
let texture = canvas.create_texture_from_file(
|
//let texture = canvas.create_texture_from_file(
|
||||||
Position {x: 0, y: 0},
|
// Position {x: 0, y: 0},
|
||||||
"texture.png",
|
// "texture.png",
|
||||||
Some(Color::WHITE)
|
// Some(Color::WHITE)
|
||||||
);
|
//);
|
||||||
let mut pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 1.0);
|
//let mut pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 1.0);
|
||||||
pix_sprite.set_texture(texture, Some(Position {x: 0, y: 0}));
|
//pix_sprite.set_texture(texture, Some(Position {x: 0, y: 0}));
|
||||||
canvas.draw(&pix_sprite);
|
//canvas.draw(&pix_sprite);
|
||||||
|
|
||||||
// scaled sprite of a manually drawed texture
|
//// scaled sprite of a manually drawed texture
|
||||||
let texture = canvas.create_texture(Size {w: 20, h: 20}, Some(Color::WHITE));
|
//let texture = canvas.create_texture(Size {w: 20, h: 20}, Some(Color::WHITE));
|
||||||
texture.borrow_mut().set_pixel(Position {x: 0, y: 0}, Pixel::rgb(0, 255, 0));
|
//texture.borrow_mut().set_pixel(Position {x: 0, y: 0}, Pixel::rgb(0, 255, 0));
|
||||||
let _ = texture.borrow_mut().iter_mut(); //iterate on whole texture
|
//let _ = texture.borrow_mut().iter_mut(); //iterate on whole texture
|
||||||
pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 2.0);
|
//pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 2.0);
|
||||||
pix_sprite.set_texture(texture, None);
|
//pix_sprite.set_texture(texture, None);
|
||||||
let _ = pix_sprite.iter_mut(); //only iterate on the part used by the sprite
|
//let _ = pix_sprite.iter_mut(); //only iterate on the part used by the sprite
|
||||||
canvas.draw(&pix_sprite);
|
//canvas.draw(&pix_sprite);
|
||||||
|
|
||||||
// floating text
|
//// floating text
|
||||||
let mut txt_sprite = canvas.create_text_sprite(Size {w: 10, h: 10}, 5.0);
|
//let mut txt_sprite = canvas.create_text_sprite(Size {w: 10, h: 10}, 5.0);
|
||||||
txt_sprite.set_text("text");
|
//txt_sprite.set_text("text");
|
||||||
txt_sprite.set_color(Color::BLACK);
|
//txt_sprite.set_color(Color::BLACK);
|
||||||
|
|
||||||
// generic operations
|
//// generic operations
|
||||||
txt_sprite.set_position(Position {x: 0, y: 0});
|
//txt_sprite.set_position(Position {x: 0, y: 0});
|
||||||
txt_sprite.set_rotation(50.0);
|
//txt_sprite.set_rotation(50.0);
|
||||||
txt_sprite.set_alpha(255);
|
//txt_sprite.set_alpha(255);
|
||||||
txt_sprite.set_scale(0.5);
|
//txt_sprite.set_scale(0.5);
|
||||||
canvas.draw(&txt_sprite);
|
//canvas.draw(&txt_sprite);
|
||||||
|
|
||||||
canvas.update();
|
canvas.update();
|
||||||
|
|
||||||
|
|||||||
@ -82,12 +82,44 @@ impl WgpuRenderer {
|
|||||||
self.surface.configure(&self.device, &self.config);
|
self.surface.configure(&self.device, &self.config);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clear(&mut self, _color: &Pixel) {
|
|
||||||
unimplemented!();
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn present(&mut self) {
|
pub fn present(&mut self) {
|
||||||
unimplemented!();
|
let output = self.surface.get_current_texture()
|
||||||
|
.map_err(|err| match err {
|
||||||
|
wgpu::SurfaceError::Lost => {
|
||||||
|
warn!("Lost surface, trying resizing");
|
||||||
|
self.resize(self.size);
|
||||||
|
self.surface.get_current_texture()
|
||||||
|
},
|
||||||
|
_ => Err(err)
|
||||||
|
}).unwrap();
|
||||||
|
|
||||||
|
let view = output.texture.create_view(&wgpu::TextureViewDescriptor::default());
|
||||||
|
let mut encoder = self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
|
||||||
|
label: Some("Render Encoder"),
|
||||||
|
});
|
||||||
|
|
||||||
|
{
|
||||||
|
let _render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||||
|
label: Some("Render Pass"),
|
||||||
|
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
|
||||||
|
view: &view,
|
||||||
|
resolve_target: None,
|
||||||
|
ops: wgpu::Operations {
|
||||||
|
load: wgpu::LoadOp::Clear(wgpu::Color {
|
||||||
|
r: 0.1,
|
||||||
|
g: 0.2,
|
||||||
|
b: 0.3,
|
||||||
|
a: 1.0,
|
||||||
|
}),
|
||||||
|
store: true,
|
||||||
|
},
|
||||||
|
})],
|
||||||
|
depth_stencil_attachment: None,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
self.queue.submit(std::iter::once(encoder.finish()));
|
||||||
|
output.present();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user