Merge pull request #2837 from dtzxporter/Expose-setting-to-toggle-vsync-on/off-

Expose setting to disable vsync if requested.
This commit is contained in:
Héctor 2025-11-21 01:48:21 +01:00 committed by GitHub
commit a81f0a2459
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 0 deletions

View file

@ -33,6 +33,13 @@ pub struct Settings {
///
/// By default, it is enabled.
pub antialiasing: bool,
/// Whether or not to attempt to synchronize rendering when possible.
///
/// Disabling it can improve rendering performance on some platforms.
///
/// By default, it is enabled.
pub vsync: bool,
}
impl Default for Settings {
@ -43,6 +50,7 @@ impl Default for Settings {
default_font: Font::default(),
default_text_size: Pixels(16.0),
antialiasing: true,
vsync: true,
}
}
}

View file

@ -16,6 +16,11 @@ pub struct Settings {
///
/// By default, it is `None`.
pub antialiasing: Option<Antialiasing>,
/// Whether or not to synchronize frames.
///
/// By default, it is `true`.
pub vsync: bool,
}
impl Default for Settings {
@ -24,6 +29,7 @@ impl Default for Settings {
default_font: Font::default(),
default_text_size: Pixels(16.0),
antialiasing: None,
vsync: true,
}
}
}
@ -42,6 +48,7 @@ impl From<core::Settings> for Settings {
},
default_text_size: settings.default_text_size,
antialiasing: settings.antialiasing.then_some(Antialiasing::MSAAx4),
vsync: settings.vsync,
}
}
}

View file

@ -44,6 +44,11 @@ impl Default for Settings {
impl From<graphics::Settings> for Settings {
fn from(settings: graphics::Settings) -> Self {
Self {
present_mode: if settings.vsync {
wgpu::PresentMode::AutoVsync
} else {
wgpu::PresentMode::AutoNoVsync
},
default_font: settings.default_font,
default_text_size: settings.default_text_size,
antialiasing: settings.antialiasing,