From 67700fdb47f5dc88784b8282f7ea1a4a0ba26260 Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 22 Aug 2024 18:33:29 -0400 Subject: [PATCH] remove window decorations from integration testing --- .../java/electrosphere/engine/Globals.java | 1 + .../renderer/RenderingEngine.java | 4 ++++ .../java/template/RenderingTestTemplate.java | 6 +----- .../renderer/ui/elements/window.png | Bin 19033 -> 19978 bytes 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index 8404ade9..835ffbe3 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -223,6 +223,7 @@ public class Globals { public static int WINDOW_WIDTH = 1920; public static int WINDOW_HEIGHT = 1080; + public static boolean WINDOW_DECORATED = true; //used to control whether the window is created with decorations or not (ie for testing) //title bar dimensions public static int WINDOW_TITLE_BAR_HEIGHT = 0; diff --git a/src/main/java/electrosphere/renderer/RenderingEngine.java b/src/main/java/electrosphere/renderer/RenderingEngine.java index 3716b0d4..a4e42ce3 100644 --- a/src/main/java/electrosphere/renderer/RenderingEngine.java +++ b/src/main/java/electrosphere/renderer/RenderingEngine.java @@ -3,6 +3,7 @@ package electrosphere.renderer; import static electrosphere.renderer.RenderUtils.createScreenTextureVAO; import static org.lwjgl.glfw.GLFW.GLFW_CONTEXT_VERSION_MAJOR; import static org.lwjgl.glfw.GLFW.GLFW_CONTEXT_VERSION_MINOR; +import static org.lwjgl.glfw.GLFW.GLFW_FALSE; import static org.lwjgl.glfw.GLFW.GLFW_OPENGL_CORE_PROFILE; import static org.lwjgl.glfw.GLFW.GLFW_OPENGL_PROFILE; import static org.lwjgl.glfw.GLFW.glfwCreateWindow; @@ -236,6 +237,9 @@ public class RenderingEngine { if(Globals.RUN_HIDDEN){ glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); } + if(!Globals.WINDOW_DECORATED){ + glfwWindowHint(GLFW.GLFW_DECORATED, GLFW_FALSE); + } // glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE); Allows you to make the background transparent // glfwWindowHint(GLFW_OPACITY, 23); //Creates the window reference object diff --git a/src/test/java/template/RenderingTestTemplate.java b/src/test/java/template/RenderingTestTemplate.java index 226c82b9..94fcde6e 100644 --- a/src/test/java/template/RenderingTestTemplate.java +++ b/src/test/java/template/RenderingTestTemplate.java @@ -13,18 +13,14 @@ import testutils.TestRenderingUtils; * A test class that involves testing renders */ public abstract class RenderingTestTemplate { - - public static final int DEFAULT_WINDOW_WIDTH = 1920; - public static final int DEFAULT_WINDOW_HEIGHT = 1080; /** * Initializes the engine */ @IntegrationSetup public void initEngine(){ + Globals.WINDOW_DECORATED = false; TestEngineUtils.initGraphicalEngine(); - Globals.WINDOW_WIDTH = DEFAULT_WINDOW_WIDTH; - Globals.WINDOW_HEIGHT = DEFAULT_WINDOW_HEIGHT; } /** diff --git a/test/java/electrosphere/renderer/ui/elements/window.png b/test/java/electrosphere/renderer/ui/elements/window.png index b297ed6179201dcb45ec56dff00a7f61833c54e9..a64d34f04826a9238d7c6d94b7925f15c5165963 100644 GIT binary patch literal 19978 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 JyXC;~e*;uA1rq=O