diff options
Diffstat (limited to 'client/src/render/mod.rs')
-rw-r--r-- | client/src/render/mod.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/client/src/render/mod.rs b/client/src/render/mod.rs index a318d08..249e87f 100644 --- a/client/src/render/mod.rs +++ b/client/src/render/mod.rs @@ -35,7 +35,7 @@ use ui::UiRenderer; use weareshared::tree::SceneTree; use wgpu::{ AdapterInfo, Backends, CommandEncoderDescriptor, Device, DeviceDescriptor, Extent3d, Features, - Instance, InstanceDescriptor, Limits, MaintainBase, PowerPreference, Queue, + Instance, InstanceDescriptor, Limits, MaintainBase, PowerPreference, PresentMode, Queue, RequestAdapterOptions, Surface, SurfaceConfiguration, TextureDescriptor, TextureDimension, TextureFormat, TextureUsages, TextureView, TextureViewDescriptor, }; @@ -65,6 +65,7 @@ pub struct GraphicsConfig { pub max_anisotropy: u16, pub max_mip_count: u32, pub sample_count: u32, + pub present_mode: PresentMode, } impl<'a> Renderer<'a> { @@ -101,21 +102,23 @@ impl<'a> Renderer<'a> { ) .block_on()?; - let surface_configuration = surface + let config = GraphicsConfig { + max_anisotropy: 16, + max_mip_count: 16, + sample_count: 4, + present_mode: PresentMode::AutoVsync, + }; + + let mut surface_configuration = surface .get_default_config(&adapter, 256, 256) .ok_or(anyhow!("no default config"))?; + surface_configuration.present_mode = config.present_mode; surface.configure(&device, &surface_configuration); let device = Arc::new(device); let queue = Arc::new(queue); - let config = GraphicsConfig { - max_anisotropy: 16, - max_mip_count: 16, - sample_count: 4, - }; - let depth = device .create_texture(&TextureDescriptor { label: None, @@ -203,6 +206,11 @@ impl<'a> Renderer<'a> { info!("graphics configuration changed"); self.scene_prepare.reconfigure(&config); self.ui_renderer.reconfigure(&config); + if config.present_mode != self.surface_configuration.present_mode { + self.surface_configuration.present_mode = config.present_mode; + self.surface + .configure(&self.device, &self.surface_configuration); + } self.config = config; self.recreate_framebuffers(); } |