1use std::sync::Arc;
2
3use bytemuck::{Pod, Zeroable};
4use easygpu::buffers::{IndexBuffer, VertexBuffer};
5use easygpu::color::Rgba8;
6
7#[repr(C)]
8#[derive(Copy, Clone, Debug, Pod, Zeroable)]
9pub(crate) struct Vertex {
10 pub position: [f32; 3],
11 pub color: Rgba8,
12}
13
14pub struct Shape {
16 pub index_count: u32,
18 pub vertices: Arc<VertexBuffer>,
20 pub indices: Arc<IndexBuffer>,
22}
23
24impl Shape {
25 pub fn draw<'a>(&'a self, pass: &mut easygpu::wgpu::RenderPass<'a>) {
33 pass.set_vertex_buffer(0, self.vertices.slice());
34 pass.set_index_buffer(self.indices.slice(), easygpu::wgpu::IndexFormat::Uint16);
35 pass.draw_indexed(0..self.index_count, 0, 0..1)
36 }
37}