From 9df8a4d197e66accb389edb5a5c54117933f157e Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 28 Jun 2026 00:09:06 +0200 Subject: feat(engine): add windowing DPI utilities --- engine/src/rendering/backend/opengl.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'engine/src/rendering/backend') 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, - size: Dimens, + size: PhysicalSize, } #[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::>::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}"); } -- cgit v1.2.3-18-g5258