use wgpu::Device;
use wgpu::util::DeviceExt;
use crate::assets::vertex_layout::GpuVertex;
pub struct Mesh {
pub vertex_buffer: wgpu::Buffer,
pub index_buffer: wgpu::Buffer,
pub index_count: u32,
}
impl Mesh {
pub fn new<T: GpuVertex>(
device: &Device,
vertices: &[T],
indices: &[u16],
) -> Self {
let vertex_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor {
label: Some("vertex buffer"),
contents: bytemuck::cast_slice(vertices),
usage: wgpu::BufferUsages::VERTEX,
}
);
let index_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor {
label: Some("index buffer"),
contents: bytemuck::cast_slice(indices),
usage: wgpu::BufferUsages::INDEX,
}
);
Self {
vertex_buffer,
index_buffer,
index_count: indices.len() as u32,
}
}
}