wgpu_quick_start/
buffers.rs1use bytemuck::NoUninit;
2use wgpu::util::DeviceExt;
3
4pub fn create_vertex_buffer<T>(device: &wgpu::Device, vertices: Vec<T>) -> wgpu::Buffer
6where
7 T: NoUninit,
8{
9 device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
10 label: None,
11 contents: bytemuck::cast_slice(&vertices),
12 usage: wgpu::BufferUsages::VERTEX,
13 })
14}
15
16pub fn create_index_buffer<T>(
18 device: &wgpu::Device,
19 vertices: Vec<T>,
20 indices: Vec<u16>,
21) -> (wgpu::Buffer, wgpu::Buffer)
22where
23 T: NoUninit,
24{
25 let vertex_buffer = create_vertex_buffer(device, vertices);
26
27 let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
28 label: None,
29 contents: bytemuck::cast_slice(&indices),
30 usage: wgpu::BufferUsages::INDEX,
31 });
32 (vertex_buffer, index_buffer)
33}