diff --git a/src/viewport.rs b/src/viewport.rs index e5941d8..f6ef180 100644 --- a/src/viewport.rs +++ b/src/viewport.rs @@ -90,11 +90,14 @@ impl WinitViewport { } pub fn acquire(&mut self) -> Result<(), wgpu::SurfaceError> { - let surface_texture = self.surface.get_current_texture()?; - self.output_view = Some(surface_texture - .texture - .create_view(&wgpu::TextureViewDescriptor::default())); - self.surface_texture = Some(surface_texture); + if self.output_view.is_none() { + let surface_texture = self.surface.get_current_texture()?; + self.output_view = Some(surface_texture + .texture + .create_view(&wgpu::TextureViewDescriptor::default())); + self.surface_texture = Some(surface_texture); + } + Ok(()) } @@ -114,6 +117,7 @@ impl WinitViewport { pub fn present(&mut self) { if let Some(surface_texture) = self.surface_texture.take() { surface_texture.present(); + self.output_view.take(); } }