From 240862d626af4ac8b2a755ee1eb9892d12c58074 Mon Sep 17 00:00:00 2001 From: Pazaz Date: Fri, 22 Apr 2022 17:15:58 -0400 Subject: [PATCH] Switch to GL3bc, change mipmap code to glGenerateMipmap --- client/src/main/java/GlRenderer.java | 2 +- client/src/main/java/GlTexture.java | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/GlRenderer.java b/client/src/main/java/GlRenderer.java index 8f5e1b1..06c0ad2 100644 --- a/client/src/main/java/GlRenderer.java +++ b/client/src/main/java/GlRenderer.java @@ -654,7 +654,7 @@ public final class GlRenderer { if (!canvas.isDisplayable()) { return -1; } - GLProfile profile = GLProfile.get(GLProfile.GL2); + GLProfile profile = GLProfile.get(GLProfile.GL3bc); @Pc(8) GLCapabilities capabilities = new GLCapabilities(profile); if (numSamples > 0) { capabilities.setSampleBuffers(true); diff --git a/client/src/main/java/GlTexture.java b/client/src/main/java/GlTexture.java index 9434c83..1406fee 100644 --- a/client/src/main/java/GlTexture.java +++ b/client/src/main/java/GlTexture.java @@ -183,18 +183,38 @@ public final class GlTexture extends SecondaryNode { GlRenderer.setTextureId(this.textureId); @Pc(82) ByteBuffer pixels = ByteBuffer.wrap(this.aClass88_1.method2728(size, size, this.aBoolean288, arg1, 0.7D, arg0)); if (this.anInt5489 == 2) { - // GLU code: + // Old GLU code: // @Pc(201) GLUgl2es1 local201 = new GLUgl2es1(); // local201.gluBuild2DMipmaps(3553, 6408, size, size, 6408, 5121, pixels); // gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR_MIPMAP_LINEAR); // gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); - // New code (OpenGL 1.4): + + // New code (OpenGL 3.0+) w/ texStorage + int num_mipmaps = 4; + gl.glTexStorage2D(GL2.GL_TEXTURE_2D, num_mipmaps, GL2.GL_RGBA8, size, size); + gl.glTexSubImage2D(GL2.GL_TEXTURE_2D, 0, 0, 0, size, size, GL2.GL_RGBA, GL2.GL_UNSIGNED_BYTE, pixels); + gl.glGenerateMipmap(GL2.GL_TEXTURE_2D); gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT); gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT); gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR_MIPMAP_LINEAR); - gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_GENERATE_MIPMAP, GL2.GL_TRUE); - gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, GL2.GL_RGBA8, size, size, 0, GL2.GL_RGBA, GL2.GL_UNSIGNED_BYTE, pixels); + + // New code (OpenGL 3.0+) w/o texStorage +// gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, GL2.GL_RGBA8, size, size, 0, GL2.GL_RGBA, GL2.GL_UNSIGNED_BYTE, pixels); +// gl.glGenerateMipmap(GL2.GL_TEXTURE_2D); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR_MIPMAP_LINEAR); + + // New code (OpenGL 1.4): +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR_MIPMAP_LINEAR); +// gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_GENERATE_MIPMAP, GL2.GL_TRUE); +// gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, GL2.GL_RGBA8, size, size, 0, GL2.GL_RGBA, GL2.GL_UNSIGNED_BYTE, pixels); + Static63.onCardTexture += pixels.limit() * 4 / 3 - this.textureSize; this.textureSize = pixels.limit() * 4 / 3; } else if (this.anInt5489 == 1) {