From e4aee67c680da23f792cc38c93f6da702abeafba Mon Sep 17 00:00:00 2001 From: Fox2Code Date: Mon, 14 Oct 2024 18:44:26 +0200 Subject: [PATCH] Implement OpenGL default texture --- src/main/java/net/vulkanmod/gl/GlTexture.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/vulkanmod/gl/GlTexture.java b/src/main/java/net/vulkanmod/gl/GlTexture.java index 4658fbc70..bae1b0902 100644 --- a/src/main/java/net/vulkanmod/gl/GlTexture.java +++ b/src/main/java/net/vulkanmod/gl/GlTexture.java @@ -20,6 +20,7 @@ public class GlTexture { private static int ID_COUNTER = 1; private static final Int2ReferenceOpenHashMap map = new Int2ReferenceOpenHashMap<>(); private static int boundTextureId = 0; + private static GlTexture defaultTexture; private static GlTexture boundTexture; private static int activeTexture = 0; @@ -35,11 +36,26 @@ public static int genTextureId() { return id; } + // Default texture can vary depending on graphic drivers, + // but it's usually a square that is either white or black + private static GlTexture getDefaultTexture() { + if (GlTexture.defaultTexture != null) + return GlTexture.defaultTexture; + GlTexture defaultTexture = new GlTexture(0); + defaultTexture.vulkanImage = VulkanImage.createWhiteTexture(); + GlTexture.defaultTexture = defaultTexture; + return defaultTexture; + } + public static void bindTexture(int id) { boundTextureId = id; - boundTexture = map.get(id); + if (id == 0) { + boundTexture = getDefaultTexture(); + } else { + boundTexture = map.get(id); + } - if (id <= 0) + if (id < 0) return; if (boundTexture == null)