summaryrefslogtreecommitdiff
path: root/engine/src/rendering/backend/opengl.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-06-28 00:09:06 +0200
committerHampusM <hampus@hampusmat.com>2026-06-30 18:24:47 +0200
commit9df8a4d197e66accb389edb5a5c54117933f157e (patch)
tree2d348fea32df9dd73ec6b961fae63e8ccb60899d /engine/src/rendering/backend/opengl.rs
parent4a5e3e612e8b597dd1734afefd01324b74fd99ab (diff)
feat(engine): add windowing DPI utilities
Diffstat (limited to 'engine/src/rendering/backend/opengl.rs')
-rw-r--r--engine/src/rendering/backend/opengl.rs21
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}");
}