JOGL und Texturen

Status
Nicht offen für weitere Antworten.

lumo

Top Contributor
Hallo Java-Forum-User
bin zwar nicht ganz neu in belangen programmieren, hab aber gereade ein problem (hoffe ich sitz ned nur einfach so auf der leitung...)
und zwar... hab ich einen modelloader für die PSP (Playstation Portable) mittels SCE-GU geschrieben (c++)
den selben loader habe ich auch für Win32 (auch c++ und opengl/glut) implementiert

jetzt möchte ich den exakt selben loader noch für java umsetzen, allerdings verweigert mir JOGL das rendern von texturen.

das besorgen der daten ist keinerlei problem (u,v, x,y,z) hab ich alles geladen;
die textur, wird, so wie ich das sehe auch korrekt geladen und dann auch an jogl übergeben...
hier mal der sourcecode des renderers (Mesh <- das ist mein loader, stellt dann einfach eine vertexliste, eine faceliste und den texturnamen/textureId zur verfügung)


Code:
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GL;
import javax.media.opengl.GLEventListener;

import com.sun.opengl.util.Animator;
import com.sun.opengl.util.texture.TextureIO;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class JOGLRotatingCube {

	private static final int SIZE = 160;

	private static float angle = 0;
	private final int[] textureId = new int[1];
	private Mesh aMesh = null;
	private final String title = "lumo's Model Loader";
	private Frame frame = null;

	JOGLRotatingCube() {
		String filename = "C:\\JAVA\\workspace\\ModelLoader\\src\\data\\cube.cmsh";
		this.aMesh = new Mesh();
		this.aMesh.loadCMSH(filename);// send true if you want to debug, or leave it if you wont
		GLCanvas canvas = getGLCanvas();
		canvas.addGLEventListener(new RotatingCubeListener());
		Animator anim = new Animator(canvas);
		addCanvasToFrame(canvas, anim);
		anim.start();
	}

	private void addCanvasToFrame(GLCanvas canvas, final Animator anim) {
		frame = new Frame(title);
		frame.setSize(600, 400);
		frame.add(canvas);
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				anim.stop();
				System.exit(0);
			}
		});
	}
	
	public void displayFPS(long fps) {
		this.frame.setTitle(title +" [@"+ fps+" FPS]");
	}

	private GLCanvas getGLCanvas() {
		GLCapabilities cap = new GLCapabilities();
		GLCanvas canvas = new GLCanvas(cap);
		return canvas;
	}

	public static void main(String[] args) {
		new JOGLRotatingCube();
	}

	public void defineTexture(GL gl) {
	     gl.glShadeModel(GL.GL_SMOOTH);
	     gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);

	     gl.glGenTextures(1, this.textureId, 0);
	     aMesh.textureID = this.textureId[0];
	     gl.glBindTexture(GL.GL_TEXTURE_2D, aMesh.textureID);
	           
	     File file = new File("C:\\JAVA\\workspace\\ModelLoader\\src\\data\\none.png");
	     try{
	    	 aMesh.texture = TextureIO.newTexture(file, true);
	    	 aMesh.texture.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
	    	 aMesh.texture.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
	     }catch(Exception e){
	         e.printStackTrace();
	     } 	     

	     //wir wollen, dass die Textur das aktuell verwendete Material
	     //ersetzt
	     gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
	 }	
	
	private void drawMesh(GL gl) {
		gl.glCullFace(GL.GL_BACK); // Set Culling Face To Back Face
		gl.glDisable(GL.GL_CULL_FACE); // Enable Culling
		//you can enable the culling if you have models with correct facing!
		
		gl.glEnable(GL.GL_TEXTURE_2D);

		gl.glBindTexture(GL.GL_TEXTURE_2D, aMesh.textureID);
		
		gl.glBegin(GL.GL_TRIANGLES);
		//gl.glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
		for (int i = 0; i < aMesh.faces.length; i++) {
			gl.glTexCoord2f(aMesh.vertices[aMesh.faces[i].v1()].u(), aMesh.vertices[aMesh.faces[i].v1()].v());
			gl.glVertex3f(aMesh.vertices[aMesh.faces[i].v1()].x() * SIZE,
					aMesh.vertices[aMesh.faces[i].v1()].y() * SIZE,
					aMesh.vertices[aMesh.faces[i].v1()].z() * SIZE);
			gl.glTexCoord2f(aMesh.vertices[aMesh.faces[i].v2()].u(), aMesh.vertices[aMesh.faces[i].v2()].v());
			gl.glVertex3f(aMesh.vertices[aMesh.faces[i].v2()].x() * SIZE,
					aMesh.vertices[aMesh.faces[i].v2()].y() * SIZE,
					aMesh.vertices[aMesh.faces[i].v2()].z() * SIZE);
			gl.glTexCoord2f(aMesh.vertices[aMesh.faces[i].v3()].u(), aMesh.vertices[aMesh.faces[i].v3()].v());
			gl.glVertex3f(aMesh.vertices[aMesh.faces[i].v3()].x() * SIZE,
					aMesh.vertices[aMesh.faces[i].v3()].y() * SIZE,
					aMesh.vertices[aMesh.faces[i].v3()].z() * SIZE);
		}
		gl.glEnd();
		gl.glDisable(GL.GL_TEXTURE_2D);
	}

	class RotatingCubeListener implements GLEventListener {
		private long fps = 0;
		private long timePassed = 0;
		private long oldTime = 0;
		
		public void init(GLAutoDrawable drawable, int i, int j, int k) {
		}

		public void displayChanged(GLAutoDrawable drawable, int i, int j,
				int k, int l) {
		}

		public void displayChanged(GLAutoDrawable drawable,
				boolean modeChanged, boolean deviceChanged) {
		}

		public void init(GLAutoDrawable drawable) {
			GL gl = drawable.getGL();
			gl.glClearColor(0.2f, 0.2666667f, 0.3294f, 1.0f); // erasing color
			gl.glColor3f(1.0f, 1.0f, 1.0f); // drawing color
			defineTexture(gl); // init the texture
			this.oldTime = System.currentTimeMillis();
		}

		public void display(GLAutoDrawable drawable) {
			GL gl = drawable.getGL();
			gl.glClear(GL.GL_COLOR_BUFFER_BIT);

			angle = angle + 5;
			gl.glMatrixMode(GL.GL_MODELVIEW);
			gl.glLoadIdentity();
			gl.glRotatef(-80, 1, 1, 0);
			gl.glRotatef(angle / 16, 1, -1, 1);
			drawMesh(gl);
			// calculate FPS
			long newTime = System.currentTimeMillis();
			long timeslice = newTime - this.oldTime;
			this.timePassed = this.timePassed+timeslice;
			this.oldTime = newTime;
			this.fps++;
			//System.out.println(this.timePassed);
			if (this.timePassed > 1000) { // one secon passed
				this.timePassed = this.timePassed - 1000;
				displayFPS(this.fps);
				this.fps = 0;
			}
		}

		public void reshape(GLAutoDrawable drawable, int x, int y, int width,
				int height) {
			GL gl = drawable.getGL();
			gl.glViewport(0, 0, width, height);
			gl.glMatrixMode(GL.GL_PROJECTION);
			gl.glLoadIdentity();
			gl.glOrtho(-width, width, -height, height, -SIZE, SIZE);
		}
	}
}
wäre super, wenn mich jemand auf den fehler hinweisen könnte (aber bitte nicht in rätseln)

vielen dank im voraus
lumo
 

lumo

Top Contributor
so hab den fehler gefunden, obwohl er für mich recht unlogisch ist...

Code:
		// why bind the textureObject and not the textureID???
		gl.glBindTexture(GL.GL_TEXTURE_2D, aMesh.texture.getTextureObject());
warum muss ich das texturobjekt binden und nicht die id?
die id wird doch als identifyer angelegt, während das objekt ja damit referenziert wird...
also warum liefert mir getTextureObject nen anderen wert, als die erzeugte TextureId??
(in meinem fall ist die id=1 und getTextureObject=2)

greets
 

lumo

Top Contributor
nope, denn... die id wird in der funktion
public void defineTexture(GL gl) übergeben, wo die textur generiert wird und die id dann übergeben wird...

Code:
        gl.glGenTextures(1, this.textureId, 0);
        aMesh.textureID = this.textureId[0];
note: das darunterliegende bind funzt nicht!
hab den code jetzt weiterentwickelt und mit dem getTextureObject() klappts...
(auch wenn ich noch immer verwundert bin warum...)
hab aber noch andere nette "schräge" funktionen entdeckt
zb dass er culling macht, egal ob ich culling per gldisable abschalte oder nicht...
nur das resultat wie er cullt ist einanders, aber beidesmal isses falsch (elemente die hinten sein sollten, werden vorn angezeigt, total verdreht :S)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
S java /jogl /Texturen mit j3d Spiele- und Multimedia-Programmierung 3
E JOGL kein zugriff auf manche methoden Spiele- und Multimedia-Programmierung 5
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
M [JOGL] eclipse export Runnable Jar - startet nicht Spiele- und Multimedia-Programmierung 3
D [JOGL] bibliothek aus jar laden Spiele- und Multimedia-Programmierung 3
A JOGL Shader Anfängerprobleme Spiele- und Multimedia-Programmierung 2
A JOGL FloatBuffer vs Buffers Spiele- und Multimedia-Programmierung 2
A JOGL glBindBuffer einmalig oder mehrmalig? Spiele- und Multimedia-Programmierung 3
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
Z lwjgl oder jogl nutzen Spiele- und Multimedia-Programmierung 9
A Jogl-Projekt unter 32-Bit kompiliert und unter 64-Bit ausführen, geht das überhaubt ?? Spiele- und Multimedia-Programmierung 9
turing JOGL Cubes performant Spiele- und Multimedia-Programmierung 17
M JOGL Cubus mit Rand darstellen Spiele- und Multimedia-Programmierung 3
T JOGL 2D Objekte drehen rotate Spiele- und Multimedia-Programmierung 4
X JOGL - wie zum laufen bringen? Spiele- und Multimedia-Programmierung 2
M Schatten mit JOGL Spiele- und Multimedia-Programmierung 4
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
D [JOGL] Freibewegliche Lichtquelle im Raum Spiele- und Multimedia-Programmierung 4
H JOGL 2.0 jars fehlen Spiele- und Multimedia-Programmierung 8
R JOGL: glUniformLocation gibt immer -1 zurück Spiele- und Multimedia-Programmierung 4
BattleMaster246 Problem mit Jogl Spiele- und Multimedia-Programmierung 14
Mikescher [JOGL] Access restriction Spiele- und Multimedia-Programmierung 6
K jogl einbinden Spiele- und Multimedia-Programmierung 6
X JOGL - Textur auf Quad verzerrt Spiele- und Multimedia-Programmierung 2
X JOGL - 2D Sprite richtig platzieren Spiele- und Multimedia-Programmierung 4
J JOGL konfigurieren / Windows 7 64-bit Spiele- und Multimedia-Programmierung 7
R JOGL polygon smooth Spiele- und Multimedia-Programmierung 20
J [JOGL] Kamera zentrieren über Achse Spiele- und Multimedia-Programmierung 4
BattleMaster246 Schussrichtung festlegen - JOGL Spiele- und Multimedia-Programmierung 8
BattleMaster246 Jogl Libs werden nicht geladen Spiele- und Multimedia-Programmierung 5
A [JOGL] TextRenderer malt Fläche hinter Buchstaben aus Spiele- und Multimedia-Programmierung 2
V Jogl: Objekt trotz Rotation immer in gleiche Richtung bewegen Spiele- und Multimedia-Programmierung 5
U [JOGL]Libs und Dlls mitliefern: Spiele- und Multimedia-Programmierung 9
S JOGL Perspektive Spiele- und Multimedia-Programmierung 2
R 2D Grafik JOGL Spiele- und Multimedia-Programmierung 18
D jogl downloaden ... wo? Spiele- und Multimedia-Programmierung 3
S JOGL 64 bit Spiele- und Multimedia-Programmierung 7
A jogl 2d performance Spiele- und Multimedia-Programmierung 20
J JOGL mit Netbeans Spiele- und Multimedia-Programmierung 3
S Jogl findet keine GLProfile ? Spiele- und Multimedia-Programmierung 6
C Frage zu Ray-Picking mit JOGL Spiele- und Multimedia-Programmierung 13
F Game mit LWJGL/JOGL in executable JAR packen, wie? Spiele- und Multimedia-Programmierung 6
D Jogl:Textur auf GLUquadric wird vertikal spiegelverkehrt dargestellt Spiele- und Multimedia-Programmierung 2
F LWJGL Smoother animieren lassen (wie bei JOGL = Animator) Spiele- und Multimedia-Programmierung 3
F JOGL 2.0 Bug? Spiele- und Multimedia-Programmierung 3
F Jogl oder Java3D ? Spiele- und Multimedia-Programmierung 20
N Ein paar fragen zu JOGL Spiele- und Multimedia-Programmierung 4
M JOGL - Mehr als nur ein Canvas - Texturpool Spiele- und Multimedia-Programmierung 7
S Jogl, no gluegen-rt :-( Spiele- und Multimedia-Programmierung 4
BattleMaster246 Pong - JOGL Spiele- und Multimedia-Programmierung 2
I JOGL: Problem mit Blending bei Billboards (Transparenz) Spiele- und Multimedia-Programmierung 2
1 JOGL: Fensterinhalt verschwindet sofort wieder Spiele- und Multimedia-Programmierung 3
jemandzehage JOGL 3D-Koordinaten des Klicks bestimmen Spiele- und Multimedia-Programmierung 2
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
E JOGL nur weißes Fenster Spiele- und Multimedia-Programmierung 2
Y 3D Koordinatensystem==> JOGL Spiele- und Multimedia-Programmierung 7
Y JOGL / OPENGL in Frame Spiele- und Multimedia-Programmierung 11
A JOGL Würfel hat durchsichtige Seiten? Spiele- und Multimedia-Programmierung 13
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
A Bewegungen mit JOGL Spiele- und Multimedia-Programmierung 12
P JOGL Button-klick-Problem Spiele- und Multimedia-Programmierung 2
S Jogl Problem bei Darstellung Spiele- und Multimedia-Programmierung 9
G JOGL Color stimmt nicht Spiele- und Multimedia-Programmierung 3
S JOGL Maven Dependency Spiele- und Multimedia-Programmierung 7
Developer_X JOGL - Sichtweite Spiele- und Multimedia-Programmierung 3
Developer_X JOGL Texturing Spiele- und Multimedia-Programmierung 31
Developer_X JOGL- Ich möchte mitmachen! Spiele- und Multimedia-Programmierung 23
X JOGL GL Kontext Initialisierung Spiele- und Multimedia-Programmierung 3
X Vertex Buffer Objects mit JOGL Spiele- und Multimedia-Programmierung 7
A JOGL / OpenGL Spiele- und Multimedia-Programmierung 7
P JOGL Cubemap Spiele- und Multimedia-Programmierung 7
P JOGL Installation Spiele- und Multimedia-Programmierung 15
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
Antoras J3D / JME oder JOGL Spiele- und Multimedia-Programmierung 2
P GLSL in JOGL Spiele- und Multimedia-Programmierung 15
S jogl ins system einbinden Spiele- und Multimedia-Programmierung 3
W JOGL bleibt nach display() in PaintArea.paintComponent hängen Spiele- und Multimedia-Programmierung 5
S JOGL Fonts Spiele- und Multimedia-Programmierung 4
S JOGL Selection By Color Spiele- und Multimedia-Programmierung 3
E JOGL und TextRenderer Spiele- und Multimedia-Programmierung 9
H JoGL mit Anwendung verteilen... Spiele- und Multimedia-Programmierung 9
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
H Jogl-Animator - Inhalt ändert sich nicht Spiele- und Multimedia-Programmierung 4
S JOGL + Multithreading Spiele- und Multimedia-Programmierung 2
P Probleme mit Vista und JOGL Spiele- und Multimedia-Programmierung 2
J Alpha Blending (jogl) Spiele- und Multimedia-Programmierung 5
G JOGL - glTranslate - Unterschiede bei zweimal Ausführen Spiele- und Multimedia-Programmierung 9
Kr0e Schattenproblem, JOGL, gluPerspective. Spiele- und Multimedia-Programmierung 2
J OpenGL (JOGL) - Radial Blur Effekt (Glow) Spiele- und Multimedia-Programmierung 2
J jogl - verschiedene Versionen Spiele- und Multimedia-Programmierung 7
Kr0e "gluSphere" (JOGL) soll Schatten werfen können Spiele- und Multimedia-Programmierung 5
A JOGL, Models Spiele- und Multimedia-Programmierung 4
A JOGL, etwas Grundlegendes Spiele- und Multimedia-Programmierung 8
Kr0e JOGL & Anpassung ins Fenster Spiele- und Multimedia-Programmierung 2
G JOGL: per Mausbewegung Objekt verschieben Spiele- und Multimedia-Programmierung 2
S In JOGL Java einbauen Spiele- und Multimedia-Programmierung 5
S Java 3D, JOGL, . Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen


Oben