LWJGL verschiedene Perspektiven mischen

Slik-util.jar, für Texturen, weil ich diese mit keinem Tutorial hingekriegt habe.

stimmt, da wollte ich dir ja noch die klasse aus meiner lib dafür zeigen…

(an die profis hier: ja, sie ist nicht gerade sauber aufgebaut, lag aber daran das ich, nachdem es “funktioniert” hat,
nicht mehr dran weiterarbeitete ^^)

was du davon nur übernehmen brauchst, ist halt die init methode, dort passiert das eigentliche textur laden.
ist gar nicht so kompliziert. versuchs mal.


import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL14;

public class AGLTexture {
	
	private int id;
	private static int active;
	
	public AGLTexture(AGLResource imageResource){
		init(imageResource, null);
	}
	
	public AGLTexture(AGLResource imageResource, AGLTextureUnit unit){
		init(imageResource, unit);
	}
	
	private void init(AGLResource imageResource, AGLTextureUnit unit){
		if(unit != null) unit.bind();
		BufferedImage source = imageResource.toImageResource();
		id = GL11.glGenTextures();
        int textureWidth = 2;
        int textureHeight = 2;
        while(textureWidth < source.getWidth()) textureWidth *= 2;
        while (textureHeight < source.getHeight()) textureHeight *= 2;
        BufferedImage textureImage;
        textureImage = new BufferedImage(textureWidth, textureHeight, BufferedImage.TYPE_4BYTE_ABGR);
        Graphics2D graphics = (Graphics2D) textureImage.getGraphics();
        graphics.drawImage(source, 0, 0, textureImage.getWidth(), textureImage.getHeight(), null);
        graphics.dispose();
        byte[] data = (byte[]) textureImage.getRaster().getDataElements(0, 0, textureWidth, textureHeight, null);
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(textureImage.getColorModel().getPixelSize() / 8 * textureWidth * textureHeight);
        byteBuffer.put(data);
        byteBuffer.rewind();
        bind();
        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);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 10);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP, GL11.GL_TRUE);
        
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, textureWidth, textureHeight, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, byteBuffer);
        unbind();
	}

	public void generateMipmaps(int count){
        bind();
		GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, count);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP, GL11.GL_TRUE);
        unbind();
	}
	
	public void bind(){
		if(id != AGLTexture.active){
			AGLTexture.active = id; 
			GL11.glBindTexture(GL11.GL_TEXTURE_2D, id);
		}
	}
	
	public static void unbind(){
		AGLTexture.active = 0;
		GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
	}
}```

Danke, das hat mir weitergeholfen

Ich hab den Fehler gefunden, in der Renderung der Welt wird Blending abgeschaltet.