Fixed issue with offsets not being reset properly leading to borked draws.
This commit is contained in:
parent
30432cbade
commit
e540b7f642
2 changed files with 10 additions and 2 deletions
|
|
@ -37,7 +37,7 @@ impl<T: Pod + Zeroable> StaticBuffer<T> {
|
|||
usages,
|
||||
gpu: Self::gpu_buffer(device, label, size, usages),
|
||||
size,
|
||||
_data: Default::default(),
|
||||
_data: PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ impl<T: Pod + Zeroable> StaticBuffer<T> {
|
|||
let size =
|
||||
wgpu::BufferAddress::from((mem::size_of::<T>() * new_count) as u64);
|
||||
|
||||
if self.size <= size {
|
||||
if self.size < size {
|
||||
self.offsets.clear();
|
||||
self.size = size;
|
||||
self.gpu = Self::gpu_buffer(device, self.label, size, self.usages);
|
||||
|
|
@ -120,4 +120,9 @@ impl<T: Pod + Zeroable> StaticBuffer<T> {
|
|||
pub fn slice_from_index(&self, index: usize) -> wgpu::BufferSlice<'_> {
|
||||
self.gpu.slice(self.offset_at(index)..)
|
||||
}
|
||||
|
||||
/// Clears any temporary data from the buffer.
|
||||
pub fn clear(&mut self) {
|
||||
self.offsets.clear()
|
||||
}
|
||||
}
|
||||
|
|
@ -241,6 +241,9 @@ impl Pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
self.vertex_buffer.clear();
|
||||
self.index_buffer.clear();
|
||||
|
||||
if let Some(blit) = &mut self.blit {
|
||||
blit.draw(encoder, target);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue