Expose setting to disable vsync if requested.

- This improves rendering performance on windows 10x and doesn't result in noticeable tearing. The user can decide if they want it anyways.
This commit is contained in:
dtzxporter 2025-03-11 10:45:43 -04:00
parent 6bf709e03e
commit 5dcab9bf3a
3 changed files with 19 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,
}
}
}

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,