diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 7720dac..b283585 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -16,6 +16,16 @@ impl StorageBuffer { pub fn into_inner(self) -> B { self.inner } + + pub fn content_of(item: &T) -> Result + where + T: ShaderType + WriteInto, + U: BufferMut + Default, + { + let mut buffer = StorageBuffer::new(U::default()); + buffer.write(item)?; + Ok(buffer.into_inner()) + } } impl From for StorageBuffer { @@ -81,6 +91,16 @@ impl UniformBuffer { pub fn into_inner(self) -> B { self.inner.inner } + + pub fn content_of(item: &T) -> Result + where + T: ShaderType + WriteInto, + U: BufferMut + Default, + { + let mut buffer = UniformBuffer::new(U::default()); + buffer.write(item)?; + Ok(buffer.into_inner()) + } } impl From for UniformBuffer {