From adfd287a39ddafa0e60ca1b52a0f3cc594ca6827 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Mon, 3 Mar 2025 00:20:53 +0100 Subject: [PATCH] Add a config to enable debug output and object labels for OpenGL in early display. --- .../main/java/net/neoforged/fml/earlydisplay/GlState.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/earlydisplay/src/main/java/net/neoforged/fml/earlydisplay/GlState.java b/earlydisplay/src/main/java/net/neoforged/fml/earlydisplay/GlState.java index 07a98911..32261611 100644 --- a/earlydisplay/src/main/java/net/neoforged/fml/earlydisplay/GlState.java +++ b/earlydisplay/src/main/java/net/neoforged/fml/earlydisplay/GlState.java @@ -5,6 +5,7 @@ package net.neoforged.fml.earlydisplay; +import static org.lwjgl.opengl.GL20C.glIsProgram; import static org.lwjgl.opengl.GL32C.GL_ACTIVE_TEXTURE; import static org.lwjgl.opengl.GL32C.GL_ARRAY_BUFFER; import static org.lwjgl.opengl.GL32C.GL_ARRAY_BUFFER_BINDING; @@ -396,7 +397,12 @@ public static void applySnapshot(StateSnapshot snapshot) { clearColor(snapshot.clearColorRed, snapshot.clearColorGreen, snapshot.clearColorBlue, snapshot.clearColorAlpha); enableBlend(snapshot.blendEnabled); blendFuncSeparate(snapshot.blendSrcRGB, snapshot.blendDstRGB, snapshot.blendSrcAlpha, snapshot.blendDstAlpha); - useProgram(snapshot.currentProgram); + // The program might have been flagged for deletion and may no longer be available + if (glIsProgram(snapshot.currentProgram)) { + useProgram(snapshot.currentProgram); + } else { + useProgram(0); + } activeTexture(snapshot.activeTextureUnit); bindTexture2D(snapshot.boundTexture2D); bindVertexArray(snapshot.boundVertexArray);