ajout mesh.rs

This commit is contained in:
Jérôme Bousquié
2026-07-05 15:51:37 +02:00
parent 7cc1fb845f
commit 22edac6ad5
3 changed files with 82 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
use crate::vertex::Vertex;
use wgpu::util::DeviceExt;
pub struct Mesh {
pub vertex_buffer: wgpu::Buffer,
pub index_buffer: Option<wgpu::Buffer>,
pub num_vertices: u32,
pub num_indices: u32,
}
impl Mesh {
pub fn new(device: &wgpu::Device, vertices: &[Vertex], indices: Option<&[u16]>) -> Self {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Mesh Vertex Buffer"),
contents: bytemuck::cast_slice(vertices),
usage: wgpu::BufferUsages::VERTEX,
});
let (index_buffer, num_indices) = if let Some(data) = indices {
let buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Mesh Index Buffer"),
usage: wgpu::BufferUsages::INDEX,
contents: bytemuck::cast_slice(data),
});
(Some(buffer), data.len() as u32)
} else {
(None, 0)
};
Self {
vertex_buffer,
index_buffer,
num_vertices: vertices.len() as u32,
num_indices,
}
}
}