LWJGL - 2D Texturen werden nicht dargestellt

darman96

Aktives Mitglied
Hallo,
ich bin neu in java und hab mich jetzt was mit LWJGL befasst und versuche grad ein kleines spiel(2D) zu schreiben. bis jetzt hat auch alles geklappt. nur als ich neben dem Hintergrund noch weitere Texturen rendern wollte werden diese nicht angezeigt ( aber geladen werden sie, daran liegts nicht. ).

Hier ist mal der Code:
Java:
package spieleworkshop;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;

import com.sun.org.apache.bcel.internal.generic.Select;

public class Game {

	private boolean running = true;
	private TextureStore textureStore = new TextureStore();
	private float fieldWidth;
	private float backgroundWidth;
	public String title;
	
	public Game(String strTitle) {
		title = strTitle;
	}
	
	public static void main(String[] args) throws LWJGLException {
		Game game = new Game("Brettspiel");
		game.run();
	}

	public void init(int width, int height) throws LWJGLException {
		DisplayMode[] dm = Display.getAvailableDisplayModes();
		
		for(DisplayMode mode : dm) {
			if (mode.getWidth() == width && mode.getHeight() == height ) {
				Display.setDisplayMode(mode);
			} else {
				Display.setDisplayMode(dm[0]);
			}
		}
		
		Display.setTitle(title);
		Display.create();
		
		GL11.glMatrixMode(GL11.GL_PROJECTION);
		GL11.glLoadIdentity();
		
		GL11.glOrtho(0, Display.getDisplayMode().getWidth(), Display.getDisplayMode().getHeight(), 0, -1, 1);
		
		GL11.glMatrixMode(GL11.GL_MODELVIEW);
		GL11.glLoadIdentity();
		
		GL11.glEnable(GL11.GL_ALPHA_TEST);
		GL11.glAlphaFunc(GL11.GL_GREATER, 0.4f);
		
		GL11.glEnable(GL11.GL_TEXTURE_2D);
		
		GL11.glClearColor(0.1f, 0.5f, 1.0f, 1.0f);
		
		LoadTextures();
	}
	
	public void run() {
		
		try {
			init(800,600);
		} catch (LWJGLException e) {
			e.printStackTrace();
		}
		
		while(running) {
			if (Display.isCloseRequested()) {
				running = false;
			}
			Display.update();
			input();
			update();
			render();
		}
		
		cleanup();
		
	}
	
	public void input() {
		
	}
	
	public void update() {
		
	}
	
	public void render() {
		GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
		GL11.glLoadIdentity();
		
		drawBackground(50, 100, "Background");
		drawFields(17, 17);
	}
	
	
	private void LoadTextures() {
		textureStore.LoadTexture("img/Fields/bg.png", "Background");
		textureStore.LoadTexture("img/Fields/feld_blau.png", "fieldBlue");
		textureStore.LoadTexture("img/Fields/playerZone.png", "playerZone");
	}
	
	private void drawBackground(float borderTop, float borderRight, String textureName) {
		
		backgroundWidth = Display.getDisplayMode().getWidth() - (borderRight * 2);
		
		float borderLeft = Display.getDisplayMode().getWidth() - borderRight;
		float borderBottom = Display.getDisplayMode().getHeight() - borderTop;
		
		textureStore.getTexture(textureName).bind();
		
		GL11.glBegin(GL11.GL_QUADS);
			GL11.glTexCoord2f(0.0f, 0.0f);
			GL11.glVertex3f(borderRight, borderTop, 0.0f);
			
			GL11.glTexCoord2f(1.0f, 0.0f);
			GL11.glVertex3f(borderLeft, borderTop, 0.0f);
			
			GL11.glTexCoord2f(1.0f, 1.0f);
			GL11.glVertex3f(borderLeft, borderBottom, 0.0f);
			
			GL11.glTexCoord2f(0.0f, 1.0f);
			GL11.glVertex3f(borderRight, borderBottom, 0.0f);
		GL11.glEnd();
		
	}
	
	private void drawFields(int fieldsX, int fieldsY) {
		
		fieldWidth = backgroundWidth / fieldsX;
		
		for (int i = 1; i < fieldsY; i++) {
			for(int j = 1; i < fieldsX; i++) {
				switch (i) {
				case 1:
					if(j >=1 && j <=3 || j >= 15 && j <= 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				case 2:
					if (j == 1 || j == 2 || j == 16 || j == 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				case 3:
					if (j == 1 || j == 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				case 15:
					if (j == 1 || j == 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				case 16:
					if (j == 1 || j == 2 || j == 16 || j == 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				case 17:
					if(j >=1 && j <=3 || j >= 15 && j <= 17) {
						drawPlayerZone(fieldWidth, j, i);
					} else {
						drawFieldBlue(fieldWidth, j, i);
					}
				default:
					drawFieldBlue(fieldWidth, j, i);
				}
			}
		}
	}
	
	private void drawPlayerZone(float width, int offsetX, int offsetY) {
		
		float startPosX = Display.getDisplayMode().getWidth() - backgroundWidth;		// berechenet und speichert die start Position des Spielfeldes auf der X-achse
		float startPosY = Display.getDisplayMode().getHeight() - backgroundWidth;		// berechenet und speichert die start Position des Spielfeldes auf der Y-achse
		
		GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureStore.getTexture("playerZone").getTextureID());
		
		GL11.glBegin(GL11.GL_QUADS);
			GL11.glTexCoord2f(0.0f, 0.0f);
			GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
			
			GL11.glTexCoord2f(1.0f, 0.0f);
			GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
			
			GL11.glTexCoord2f(1.0f, 1.0f);
			GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
			
			GL11.glTexCoord2f(0.0f, 1.0f);
			GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
		GL11.glEnd();
	}
	
	private void drawFieldBlue(float width, int offsetX, int offsetY) {
		
		float startPosX = Display.getDisplayMode().getWidth() - backgroundWidth;		// berechenet und speichert die start Position des Spielfeldes auf der X-achse
		float startPosY = Display.getDisplayMode().getHeight() - backgroundWidth;		// berechenet und speichert die start Position des Spielfeldes auf der Y-achse
		
		textureStore.getTexture("fieldBlue").bind();
		
		GL11.glBegin(GL11.GL_QUADS);
		GL11.glTexCoord2f(0.0f, 0.0f);
		GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
		
		GL11.glTexCoord2f(1.0f, 0.0f);
		GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
		
		GL11.glTexCoord2f(1.0f, 1.0f);
		GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
		
		GL11.glTexCoord2f(0.0f, 1.0f);
		GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
	GL11.glEnd();
	}
	
	public void cleanup() {
		Display.destroy();
	}
	
}

Gruß darman96
 
Zuletzt bearbeitet:

darman96

Aktives Mitglied
hi ich hatte den Thread auch schon gefunden aber da geht es doch um 3D und bei mir 2D. ???:L

hat keiner ne ahnung woran´s liegen könnte?
 
Zuletzt bearbeitet:

darman96

Aktives Mitglied
ah wenn ich debugge sagt der mir an der stelle in der drawPlayerZone() wo auf Display zugreife das die lwjgl.jar kein Source Attachement hat. was soll das heißen?
 

Marco13

Top Contributor
Hat nichts zu sagen, nur dass der LWJGL source halt nicht da ist. Genausowenig wie der von TextureStore. Was ist das für eine Klasse?
 

darman96

Aktives Mitglied
ne eigene klasse kann ich auch noch posten

Hier:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package brettspiel;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;

/**
 *
 * @author Erik
 */
public class TextureStore {
    private HashMap<String, Texture> textures = new HashMap<String, Texture>();
	
	public boolean LoadTexture(String path, String name) throws IOException {
		
		Texture texture = null;
		
		try {
			if((texture = TextureLoader.getTexture("PNG", new FileInputStream(path))) != null) {
				textures.put(name, texture);
				return true;
			}
		} 
		catch (FileNotFoundException e) 
		{
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		
		return false;
	}
	
	public Texture getTexture(String name) {
		
		if (textures.containsKey(name)) {
			return textures.get(name);
		}
		
		return null;
	}
}
 

Marco13

Top Contributor
Nochmal ganz suggestiv alle vier vertices untereinander:
Java:
GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);
GL11.glVertex3f(startPosX + (offsetX - 1) * fieldWidth, startPosY + (offsetY - 1) * fieldWidth, 1.0f);

Mustererkennung ? Wikipedia
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T lwjgl Texturen werden nicht gezeichnet Spiele- und Multimedia-Programmierung 23
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL - Texturen flackern Spiele- und Multimedia-Programmierung 2
X [LWJGL] Binden von Texturen per PNG File und Texture Sheet Spiele- und Multimedia-Programmierung 1
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
S LWJGL Texturen Spiele- und Multimedia-Programmierung 14
P LWJGL Texturen Spiele- und Multimedia-Programmierung 6
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
coolian lwjgl glfw window zeigt nur grau an Spiele- und Multimedia-Programmierung 0
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
V LWJGL GUI Spiele- und Multimedia-Programmierung 1
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
C GLSL Shaderprogrammierung in LWJGL 3 Spiele- und Multimedia-Programmierung 12
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
G LWJGL .obj .mtl loader Spiele- und Multimedia-Programmierung 3
G 2D animationen LWJGL Spiele- und Multimedia-Programmierung 0
pcfreak9000 "Allgemeine" Performance verbessern (LWJGL 2) Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
G lwjgl verwendung Spiele- und Multimedia-Programmierung 6
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
E LWJGL glGenVertexArrays() erzeugt doppelte IDs Spiele- und Multimedia-Programmierung 3
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
K No Lwjgl Spiele- und Multimedia-Programmierung 2
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
T [LWJGL] Textur / File wieder freigeben Spiele- und Multimedia-Programmierung 4
F [LWJGL] Skeletal Animation 3D Spiele- und Multimedia-Programmierung 1
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
RalleYTN LWJGL Vignette Spiele- und Multimedia-Programmierung 2
E LWJGL Switchen zwischen gluOrtho und gluPerspective Spiele- und Multimedia-Programmierung 0
RalleYTN LWJGL Rotation Spiele- und Multimedia-Programmierung 1
C LWJGL Color Picking Textures deaktivieren Spiele- und Multimedia-Programmierung 0
K FBO Framebuffer object [LWJGL] 2D tutorial gesucht Spiele- und Multimedia-Programmierung 2
K [LWJGL] 2D Tunneler Hintergrund Spiele- und Multimedia-Programmierung 7
S LWJGL 3d-spieleentwicklung Spiele- und Multimedia-Programmierung 3
H LWJGL-Renderfail Spiele- und Multimedia-Programmierung 1
Androbin LWJGL - Kollisions-Bug (Fallen) Spiele- und Multimedia-Programmierung 14
K Schiessen in 2D (LWJGL) Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
U Kann nur ein Objekt mit LWJGL rendern Spiele- und Multimedia-Programmierung 2
X LWJGL | Parent.isDisplayable() must be true | wie kann man das zu true machen? Spiele- und Multimedia-Programmierung 0
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
U Quadrate anklicken LWJGL Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
B LWJGL Manche Seiten werden transparent angezeigt Spiele- und Multimedia-Programmierung 2
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
U Komische fragmente bei LWJGL Spiele- und Multimedia-Programmierung 6
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Q LWJGL - Alpha-Probleme Spiele- und Multimedia-Programmierung 2
S [LWJGL] Zweimal selbe Textur trotz unterschiedlicher IDs Spiele- und Multimedia-Programmierung 3
O LWJGL AWTGLCanvas Tiefe auf 1 beschränkt Spiele- und Multimedia-Programmierung 5
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
S [lwjgl] Renderbug bei mehreren Objekten Spiele- und Multimedia-Programmierung 2
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
M LWJGL Text rendern Spiele- und Multimedia-Programmierung 3
B LWJGL Mauskoordinaten Spiele- und Multimedia-Programmierung 1
J LWJGL Update Schleife (Snake) Spiele- und Multimedia-Programmierung 6
B LWJGL Display.update() ist langsam Spiele- und Multimedia-Programmierung 5
R LWJGL: Performance glBegin, drawList, ... Spiele- und Multimedia-Programmierung 16
R LWJGL: Object Loader -> .obj, .c4d, ... laden Spiele- und Multimedia-Programmierung 3
R LWJGL: Textur -> unsichtbare Stellen, wie erzeugen? Spiele- und Multimedia-Programmierung 4
A LwJGL - Animation Stockt Spiele- und Multimedia-Programmierung 5
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
R LWJGL: 3D Picking Spiele- und Multimedia-Programmierung 4
F LWJGL: Textur ändern mit GL11.readPixels Spiele- und Multimedia-Programmierung 5
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
F LWJGL: Is undefined? Spiele- und Multimedia-Programmierung 7
F LWJGL Kamerabug Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
F LWJGL Dreidimensionaler Würfel Spiele- und Multimedia-Programmierung 15
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
P "Tiefe" in Objekten - LWJGL Spiele- und Multimedia-Programmierung 12
T LWJGL 3D Objekt Collision: Wie? Spiele- und Multimedia-Programmierung 11
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
V Komischer Fehler in LWJGL Spiele- und Multimedia-Programmierung 18
Z lwjgl oder jogl nutzen Spiele- und Multimedia-Programmierung 9
Y LWJGL Hintergrund Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] 2D Sprite Rotieren/Drehen Spiele- und Multimedia-Programmierung 6
CookieSoft LWJGL Ubuntu 12.04 Fehler Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
F lwjgl - Skysphere Spiele- und Multimedia-Programmierung 3
CookieSoft Slick und LWJGL Texture lag Spiele- und Multimedia-Programmierung 13
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
0 Grafikfehler LWJGL Spiele- und Multimedia-Programmierung 2
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
S (LWJGL) VertexBufferObjects Spiele- und Multimedia-Programmierung 20
T LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac Spiele- und Multimedia-Programmierung 19

Ähnliche Java Themen


Oben