summaryrefslogtreecommitdiffstats
path: root/examples/custom_shader/src/primitive/buffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/custom_shader/src/primitive/buffer.rs')
-rw-r--r--examples/custom_shader/src/primitive/buffer.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/custom_shader/src/primitive/buffer.rs b/examples/custom_shader/src/primitive/buffer.rs
new file mode 100644
index 00000000..377ce1bb
--- /dev/null
+++ b/examples/custom_shader/src/primitive/buffer.rs
@@ -0,0 +1,39 @@
+// A custom buffer container for dynamic resizing.
+pub struct Buffer {
+ pub raw: wgpu::Buffer,
+ label: &'static str,
+ size: u64,
+ usage: wgpu::BufferUsages,
+}
+
+impl Buffer {
+ pub fn new(
+ device: &wgpu::Device,
+ label: &'static str,
+ size: u64,
+ usage: wgpu::BufferUsages,
+ ) -> Self {
+ Self {
+ raw: device.create_buffer(&wgpu::BufferDescriptor {
+ label: Some(label),
+ size,
+ usage,
+ mapped_at_creation: false,
+ }),
+ label,
+ size,
+ usage,
+ }
+ }
+
+ pub fn resize(&mut self, device: &wgpu::Device, new_size: u64) {
+ if new_size > self.size {
+ self.raw = device.create_buffer(&wgpu::BufferDescriptor {
+ label: Some(self.label),
+ size: new_size,
+ usage: self.usage,
+ mapped_at_creation: false,
+ });
+ }
+ }
+}