1
0
Fork 0

add gradle

This commit is contained in:
Sen 2025-05-26 17:09:08 +02:00
parent bb6ebb0be8
commit 4e51e18bdc
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
3033 changed files with 470 additions and 0 deletions

View file

@ -0,0 +1,135 @@
package client.renderer.texture;
import static org.lwjgl.system.MemoryUtil.NULL;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
import javax.imageio.ImageIO;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import client.renderer.GlState;
import client.util.FileUtils;
public class TextureUtil
{
private static final IntBuffer BUFFER = ByteBuffer.allocateDirect(4194304 << 2).order(ByteOrder.nativeOrder()).asIntBuffer();
public static final DynamicTexture MISSING = new DynamicTexture(16, 16);
public static final int[] MISSING_DATA = MISSING.getTextureData();
public static void uploadTexture(int[] data, int w, int h, int x, int y)
{
int i = 4194304 / w;
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
int l;
for (int j = 0; j < w * h; j += w * l)
{
int k = j / w;
l = Math.min(i, h - k);
int i1 = w * l;
BUFFER.clear();
BUFFER.put(data, j, i1);
BUFFER.position(0).limit(i1);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, x, y + k, w, l, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, BUFFER);
}
}
public static int uploadImage(int id, BufferedImage img)
{
allocateTexture(id, img.getWidth(), img.getHeight());
GlState.bindTexture(id);
int w = img.getWidth();
int h = img.getHeight();
int k = 4194304 / w;
int[] data = new int[k * w];
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
for (int l = 0; l < w * h; l += w * k)
{
int i1 = l / w;
int j1 = Math.min(k, h - i1);
int k1 = w * j1;
img.getRGB(0, i1, w, j1, data, 0, w);
BUFFER.clear();
BUFFER.put(data, 0, k1);
BUFFER.position(0).limit(k1);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, i1, w, j1, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, BUFFER);
}
return id;
}
public static void allocateTexture(int id, int width, int height)
{
// GlState.deleteTexture(id); //TODO: check needed
GlState.bindTexture(id);
// SKC.glTexParameteri(SKC.GL_TEXTURE_2D, SKC.GL_TEXTURE_MAX_LEVEL, 0);
// SKC.glTexParameterf(SKC.GL_TEXTURE_2D, SKC.GL_TEXTURE_MIN_LOD, 0.0F);
// SKC.glTexParameterf(SKC.GL_TEXTURE_2D, SKC.GL_TEXTURE_MAX_LOD, 0.0F);
// SKC.glTexParameterf(SKC.GL_TEXTURE_2D, SKC.GL_TEXTURE_LOD_BIAS, 0.0F);
GL11.nglTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
}
public static int[] readImageData(String loc) throws IOException
{
BufferedImage img = readImage(FileUtils.getResource(loc));
int w = img.getWidth();
int h = img.getHeight();
int[] data = new int[w * h];
img.getRGB(0, 0, w, h, data, 0, w);
return data;
}
public static BufferedImage readImage(InputStream in) throws IOException
{
BufferedImage img;
try
{
img = ImageIO.read(in);
}
finally
{
try {
if(in != null) {
in.close();
}
}
catch(IOException e) {
}
}
return img;
}
static
{
int i = -16777216;
int j = -524040;
int[] aint = new int[] { -524040, -524040, -524040, -524040, -524040, -524040, -524040, -524040};
int[] aint1 = new int[] { -16777216, -16777216, -16777216, -16777216, -16777216, -16777216, -16777216, -16777216};
int k = aint.length;
for (int l = 0; l < 16; ++l)
{
System.arraycopy(l < k ? aint : aint1, 0, MISSING_DATA, 16 * l, k);
System.arraycopy(l < k ? aint1 : aint, 0, MISSING_DATA, 16 * l + k, k);
}
MISSING.updateDynamicTexture();
}
}