diff options
| author | HampusM <hampus@hampusmat.com> | 2026-06-28 00:09:06 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-06-30 18:24:47 +0200 |
| commit | 9df8a4d197e66accb389edb5a5c54117933f157e (patch) | |
| tree | 2d348fea32df9dd73ec6b961fae63e8ccb60899d /engine/src/rendering | |
| parent | 4a5e3e612e8b597dd1734afefd01324b74fd99ab (diff) | |
feat(engine): add windowing DPI utilities
Diffstat (limited to 'engine/src/rendering')
| -rw-r--r-- | engine/src/rendering/backend/opengl.rs | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs index c1e4823..f8be5b4 100644 --- a/engine/src/rendering/backend/opengl.rs +++ b/engine/src/rendering/backend/opengl.rs @@ -2,6 +2,7 @@ use std::borrow::Cow; use std::collections::HashMap; +use std::num::NonZero; use ecs::query::term::With; use glutin::config::Config as GlutinConfig; @@ -119,6 +120,7 @@ use crate::texture::{ }; use crate::util::OptionExt; use crate::vector::{Vec2, Vec3}; +use crate::windowing::dpi::PhysicalSize; use crate::windowing::window::{ Closed as WindowClosed, CreationAttributes as WindowCreationAttributes, @@ -151,7 +153,7 @@ struct GraphicsContext struct GraphicsContextSurface { window_surface: GlutinSurface<GlutinWindowSurface>, - size: Dimens<u32>, + size: PhysicalSize<u32>, } #[derive(Debug)] @@ -299,7 +301,7 @@ fn init_window_graphics( } }; - let Some(window_inner_size) = window.inner_size.clone().try_into_nonzero() else { + let Ok(window_inner_size) = PhysicalSize::<NonZero<u32>>::try_convert_from(window.inner_size.clone()) else { tracing::error!( "Cannot create a surface for a window with a width/height of 0", ); @@ -349,7 +351,10 @@ fn init_window_graphics( if let Err(err) = gl_set_viewport( &gl_context, &Vec2 { x: 0, y: 0 }.into(), - &window.inner_size.clone().into(), + &opengl_bindings::data_types::Dimens { + width: window.inner_size.width, + height: window.inner_size.height + } ) { tracing::error!("Failed to set viewport: {err}"); } @@ -467,7 +472,10 @@ fn handle_commands( if let Err(err) = gl_set_viewport( gl_context, &Vec2 { x: 0, y: 0 }.into(), - &surface.size.into(), + &opengl_bindings::data_types::Dimens { + width: surface.size.width, + height: surface.size.height + } ) { tracing::error!("Failed to set viewport: {err}"); } @@ -487,7 +495,10 @@ fn handle_commands( if let Err(err) = gl_set_viewport( gl_context, &Vec2 { x: 0, y: 0 }.into(), - &surface.size.into(), + &opengl_bindings::data_types::Dimens { + width: surface.size.width, + height: surface.size.height + } ) { tracing::error!("Failed to set viewport: {err}"); } |
