WinitViewport supports multiple acquisitions

This commit is contained in:
mars 2022-05-11 12:59:39 -06:00
parent 048afe7e3e
commit 77e4b4dc4b
1 changed files with 9 additions and 5 deletions

View File

@ -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();
}
}