From e7336cbf82c8fa44d73d9261783d28cf06834e86 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Wed, 28 Aug 2024 21:41:07 +0200 Subject: [PATCH] Fractional Scaling --- .../java/dev/euph/engine/opengl/GLWindow.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Engine/src/opengl/java/dev/euph/engine/opengl/GLWindow.java b/Engine/src/opengl/java/dev/euph/engine/opengl/GLWindow.java index 3b6013c..e02072f 100644 --- a/Engine/src/opengl/java/dev/euph/engine/opengl/GLWindow.java +++ b/Engine/src/opengl/java/dev/euph/engine/opengl/GLWindow.java @@ -19,19 +19,24 @@ public class GLWindow extends Window { }); if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) { - GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); - assert vidmode != null; + GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + assert videoMode != null; glfwSetWindowPos( id, - (vidmode.width() - width) / 2, - (vidmode.height() - height) / 2 + (videoMode.width() - width) / 2, + (videoMode.height() - height) / 2 ); } addResizeCallback((int newWidth, int newHeight) -> { GLWindow.this.width = newWidth; GLWindow.this.height = newHeight; - glViewport(0, 0, newWidth, newHeight); + + float[] x = new float[1]; + float[] y = new float[1]; + glfwGetWindowContentScale(getId(), x, y); + + glViewport(0, 0, (int) (newWidth * x[0]), (int) (newHeight * y[0])); }); GL.createCapabilities();