#[derive(Debug)]
pub(crate) struct DownsampledRenderBuffer {
pub size: usize,
pub buffer: Vec<f32>,
pub write: usize,
pub read: usize,
}
impl DownsampledRenderBuffer {
pub(crate) fn new(downsampled_buffer_size: usize) -> Self {
Self {
size: downsampled_buffer_size,
buffer: vec![0.0f32; downsampled_buffer_size],
write: 0,
read: 0,
}
}
pub(crate) fn offset_index(&self, index: usize, offset: i32) -> usize {
((self.size as i32 + index as i32 + offset) as usize) % self.size
}
pub(crate) fn update_write_index(&mut self, offset: i32) {
self.write = self.offset_index(self.write, offset);
}
pub(crate) fn update_read_index(&mut self, offset: i32) {
self.read = self.offset_index(self.read, offset);
}
}