diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-27 20:44:01 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-27 20:44:01 +0100 |
commit | 505560045a30dd1078480734a8cbf9b12c781170 (patch) | |
tree | 8a489e9576863d0e44b7a9cf8208a841050ab571 /client/src/render | |
parent | f5caf8f9643c2e7d10afb4a83f980b1e8659eae7 (diff) | |
download | weareserver-505560045a30dd1078480734a8cbf9b12c781170.tar weareserver-505560045a30dd1078480734a8cbf9b12c781170.tar.bz2 weareserver-505560045a30dd1078480734a8cbf9b12c781170.tar.zst |
present mode setting
Diffstat (limited to 'client/src/render')
-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(); } |