adore 0.0.0

Adore: A flexible Rust game dev framework. Bring your own tools for streamlined development.
Documentation
use wgpu::util::DeviceExt;

pub struct DynamicVertexBuffer {
    pub(crate) buffer: wgpu::Buffer,

    size: usize,
}

impl DynamicVertexBuffer {
    pub fn new(data: &[u8]) -> Self {
        let buffer = ctx!().device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
            label: Some("Dynamic Vertex Buffer"),
            contents: data,
            usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
        });

        Self {
            buffer,

            size: data.len(),
        }
    }

    pub fn set(&mut self, data: &[u8]) {
        if data.len() != self.size {
            self.buffer = ctx!().device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
                label: Some("Dynamic Vertex Buffer"),
                contents: data,
                usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
            });

            self.size = data.len();
        }

        ctx!().queue.write_buffer(&self.buffer, 0, data);
    }
}