From bb9bafb778f05a704710a94f35aec1538c7a8042 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sun, 10 Dec 2023 15:18:17 +0100 Subject: [PATCH] opengl: don't set buffer limit to 0 when uploading texture buffer That fixes uploading skins when the skin is present twice. Fixes GH-23 --- .../gui/rendering/system/opengl/texture/OpenGLTextureArray.kt | 3 ++- .../system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt index 1d7fece6a..d09a7c58a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt @@ -63,7 +63,8 @@ class OpenGLTextureArray( val renderData = texture.renderData as OpenGLTextureData for ((level, buffer) in texture.data.collect().withIndex()) { if (level > this.mipmaps) break - buffer.data.flip() + buffer.data.position(0) + buffer.data.limit(buffer.data.capacity()) glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, renderData.index, buffer.size.x, buffer.size.y, 1, buffer.glFormat, buffer.glType, buffer.data) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt index 766027423..07d7c92ac 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/dynamic/OpenGLDynamicTextureArray.kt @@ -67,7 +67,8 @@ class OpenGLDynamicTextureArray( // clear first glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, index, resolution shr level, resolution shr level, 1, GL_RGBA, GL_UNSIGNED_BYTE, empty) } - buffer.data.flip() + buffer.data.position(0) + buffer.data.limit(buffer.data.capacity()) glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, index, buffer.size.x, buffer.size.y, 1, buffer.glFormat, buffer.glType, buffer.data) } }