use crate::context::WgpuContext;
use crate::core::buffer::VertexBuffer;
use crate::core::vertex::VertexPC;
pub struct FullscreenQuad {
vertex_buffer: VertexBuffer,
}
impl FullscreenQuad {
pub fn new(ctx: &WgpuContext) -> Self {
let vertices = vec![
VertexPC::new([-1.0, -1.0, 0.0], [0.0, 1.0, 0.0, 0.0]), VertexPC::new([3.0, -1.0, 0.0], [2.0, 1.0, 0.0, 0.0]),
VertexPC::new([-1.0, 3.0, 0.0], [0.0, -1.0, 0.0, 0.0]),
];
let vertex_buffer = VertexBuffer::new(ctx, &vertices, Some("fullscreen quad"));
Self { vertex_buffer }
}
pub fn vertex_buffer(&self) -> &VertexBuffer {
&self.vertex_buffer
}
pub fn draw<'a>(&'a self, render_pass: &mut wgpu::RenderPass<'a>) {
render_pass.set_vertex_buffer(0, self.vertex_buffer.slice());
render_pass.draw(0..3, 0..1);
}
}