diff --git a/src/canvas.rs b/src/canvas.rs index 38d47ae..71f4943 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -94,10 +94,15 @@ impl Canvas { unimplemented!(); } - pub fn create_texture(&mut self, _size: Size, _background: Option) - -> Rc> + pub fn create_texture(&mut self, size: Size, background: Option) + -> Result { - unimplemented!(); + let buffer = vec!(background.unwrap_or_else(|| Pixel::from(Color::NONE)); + (size.w * size.h).try_into().unwrap()); + let texture = Texture::create(&self.renderer, &Vec::from(bytemuck::cast_slice(&buffer)), + size); + + Ok(TextureHandle::from_texture(texture)) } pub fn create_texture_from_file(&mut self, diff --git a/src/renderer/texture.rs b/src/renderer/texture.rs index cefa31b..8d06530 100644 --- a/src/renderer/texture.rs +++ b/src/renderer/texture.rs @@ -17,6 +17,7 @@ pub struct Texture { impl Texture { + //TODO: take buffer's ownership pub fn create(renderer: &WgpuRenderer, buffer: &[u8], size: Size)