From 4b0cf7bdfe8bc00877e233530a70c55ecbb2915c Mon Sep 17 00:00:00 2001 From: RK_01 <50594595+RaphiMC@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:48:10 +0100 Subject: [PATCH] chore: set all needed glPixelStore states for ImGuiImplGl3 (#298) Fixes a crash when trying to upload the texture if the application changed one of the 3 added states before ImGui was initialized --- imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java b/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java index 7435bff..1281d03 100644 --- a/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java +++ b/imgui-lwjgl3/src/main/java/imgui/gl3/ImGuiImplGl3.java @@ -65,6 +65,9 @@ import static org.lwjgl.opengl.GL32.GL_TEXTURE_MAG_FILTER; import static org.lwjgl.opengl.GL32.GL_TEXTURE_MIN_FILTER; import static org.lwjgl.opengl.GL32.GL_TRIANGLES; import static org.lwjgl.opengl.GL32.GL_TRUE; +import static org.lwjgl.opengl.GL32.GL_UNPACK_ALIGNMENT; +import static org.lwjgl.opengl.GL32.GL_UNPACK_SKIP_PIXELS; +import static org.lwjgl.opengl.GL32.GL_UNPACK_SKIP_ROWS; import static org.lwjgl.opengl.GL32.GL_UNPACK_ROW_LENGTH; import static org.lwjgl.opengl.GL32.GL_UNSIGNED_BYTE; import static org.lwjgl.opengl.GL32.GL_UNSIGNED_INT; @@ -545,6 +548,9 @@ public class ImGuiImplGl3 { glBindTexture(GL_TEXTURE_2D, data.fontTexture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // Not on WebGL/ES + glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); // Not on WebGL/ES + glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); // Not on WebGL/ES glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); // Not on WebGL/ES glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width.get(), height.get(), 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);