tirbofish/dropbear · commit
a75bf7707079ec6c32154552c01b1fde793aa163
feature: debug drawing, such as rays and objects and lines and stuff like that
todo: change colliderwireframe to use DebugDraw instead.
Signature present but could not be verified.
Unverified
@@ -11,66 +11,87 @@ pub struct ResizableBuffer<T> { _marker: PhantomData<T>, } -#[derive(Debug, Clone)] -pub struct UniformBuffer<T> { - buffer: wgpu::Buffer, - label: String, - _marker: PhantomData<T>, -} - -impl<T: bytemuck::Pod> UniformBuffer<T> { - pub fn new(device: &wgpu::Device, label: &str) -> Self { - let size = (std::mem::size_of::<T>() as wgpu::BufferAddress).max(16); +impl<T: bytemuck::Pod> ResizableBuffer<T> { + pub fn new( + device: &wgpu::Device, + initial_capacity: usize, + usage: wgpu::BufferUsages, + label: &str, + ) -> Self { + let size = (initial_capacity * std::mem::size_of::<T>()) as wgpu::BufferAddress; let buffer = device.create_buffer(&wgpu::BufferDescriptor { label: Some(label), - size, - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + size: size.max(16), + usage, mapped_at_creation: false, }); + log::debug!("Registered new resizable buffer: {:?} (usage={:?})", label, usage); Self { buffer, + capacity: initial_capacity, + usage, label: label.to_string(), _marker: PhantomData, } } - pub fn write(&self, queue: &wgpu::Queue, value: &T) { + pub fn write(&mut self, device: &wgpu::Device, queue: &wgpu::Queue, data: &[T]) { puffin::profile_function!(&self.label); - queue.write_buffer(&self.buffer, 0, bytemuck::bytes_of(value)); + if data.is_empty() {
Large diffs are not rendered by default. Showing the first 50 of 1531 lines. Show full diff