diff options
Diffstat (limited to 'client/src/interfaces/graphicsconfig.rs')
-rw-r--r-- | client/src/interfaces/graphicsconfig.rs | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/client/src/interfaces/graphicsconfig.rs b/client/src/interfaces/graphicsconfig.rs index 8832e8d..0021100 100644 --- a/client/src/interfaces/graphicsconfig.rs +++ b/client/src/interfaces/graphicsconfig.rs @@ -15,8 +15,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ use super::InterfaceData; -use egui::{Grid, Slider, Widget}; +use egui::{ComboBox, Grid, Slider, Widget}; use std::sync::Arc; +use wgpu::PresentMode; pub struct GraphicsConfigInterface { pub idata: Arc<InterfaceData>, @@ -27,11 +28,21 @@ impl Widget for &mut GraphicsConfigInterface { let mut conf = self.idata.graphics_config.lock().unwrap(); Grid::new("gconf").show(ui, |ui| { ui.label("Primitive Multisampling AA"); - ui.horizontal(|ui| { - ui.radio_value(&mut conf.1.sample_count, 1, "No MSAA"); - ui.radio_value(&mut conf.1.sample_count, 2, "MSAAx2"); - ui.radio_value(&mut conf.1.sample_count, 4, "MSAAx4"); - ui.radio_value(&mut conf.1.sample_count, 8, "MSAAx8"); + ui.vertical(|ui| { + ComboBox::from_id_salt("msaa") + .selected_text(match conf.1.sample_count { + 1 => "No MSAA", + 2 => "MSAAx2", + 4 => "MSAAx4", + 8 => "MSAAx8", + _ => unreachable!(), + }) + .show_ui(ui, |ui| { + ui.selectable_value(&mut conf.1.sample_count, 1, "No MSAA"); + ui.selectable_value(&mut conf.1.sample_count, 2, "MSAAx2"); + ui.selectable_value(&mut conf.1.sample_count, 4, "MSAAx4"); + ui.selectable_value(&mut conf.1.sample_count, 8, "MSAAx8"); + }); }); ui.end_row(); ui.label("Mipmap Levels"); @@ -40,6 +51,28 @@ impl Widget for &mut GraphicsConfigInterface { ui.label("Maximum Anisotropy"); ui.add(Slider::new(&mut conf.1.max_anisotropy, 1..=32).show_value(true)); ui.end_row(); + ui.label("Present Mode"); + ui.vertical(|ui| { + ComboBox::from_id_salt("pm") + .selected_text(format!("{:?}", conf.1.present_mode)) + .show_ui(ui, |ui| { + for mode in [ + PresentMode::AutoVsync, + PresentMode::AutoNoVsync, + PresentMode::Fifo, + PresentMode::FifoRelaxed, + PresentMode::Immediate, + PresentMode::Mailbox, + ] { + ui.selectable_value( + &mut conf.1.present_mode, + mode, + format!("{mode:?}"), + ); + } + }); + }); + ui.end_row(); }); if ui.button("Apply").clicked() { conf.0 = true; |