easy_gpu/assets/render/
mesh.rs1use wgpu::Device;
2use wgpu::util::DeviceExt;
3use crate::assets::vertex_layout::GpuVertex;
4
5pub struct Mesh {
6 pub vertex_buffer: wgpu::Buffer,
7 pub index_buffer: wgpu::Buffer,
8 pub index_count: u32,
9}
10
11impl Mesh {
12 pub fn new<T: GpuVertex>(
13 device: &Device,
14 vertices: &[T],
15 indices: &[u16],
16 ) -> Self {
17 let vertex_buffer = device.create_buffer_init(
18 &wgpu::util::BufferInitDescriptor {
19 label: Some("vertex buffer"),
20 contents: bytemuck::cast_slice(vertices),
21 usage: wgpu::BufferUsages::VERTEX,
22 }
23 );
24
25 let index_buffer = device.create_buffer_init(
26 &wgpu::util::BufferInitDescriptor {
27 label: Some("index buffer"),
28 contents: bytemuck::cast_slice(indices),
29 usage: wgpu::BufferUsages::INDEX,
30 }
31 );
32
33 Self {
34 vertex_buffer,
35 index_buffer,
36 index_count: indices.len() as u32,
37 }
38 }
39}