GLUT und Texturen oder ist GLUT abgemeldet?

Status
Nicht offen für weitere Antworten.

estartu

Mitglied
Hallo.
Ich muss erst einmal sagen das ich neu bin im jogl programmieren und noch keinen Gesamtüberblick habe. Mir haben die GLUT-Befehle aber gut gefallen weil man da ziemlich leicht an dreidimensionale Körper ran kommt.
Ich habe mit den GLU-Befehlen einen Würfel gezeichnet und wollte ihn nun mit einer
Textur belegen. Ich konnte im Internet aber nichts richtiges finden wie ich das anstellen soll.
Die Beispiele beziehen sich immer auf Flächen und nicht auf 3-Dimensionale Körper.
Beim suchen im Internet bin ich auf die Aussage gestossen das man GLUT nicht mehr verwenden soll da es nicht mehr weiter entwickelt wird und man solle sowieso alle dreidimensionalen Körper aus einfachen Flächen zusammensetzen und dann auf diese die Texturen anbringen.
Ist das so. Ist wirklich davon abzuraten Befehle zu benutzen die gleich dreidimensionale Objekte erzeugen?

Und gleich eine Frage hinterher.
Ich kann nun Flächen mit Texturen überziehen aber leider wird, egal wie klein ich die Textur auch mache die Textur immer über die ganze Fläche gezogen. Wie kann ich erreichen das die Textur wie Kacheln auf die Fläche gelegt wird. Das die Textur also dauernd wiederholt wird?


estartu
 

estartu

Mitglied
Hallo
Danke für deine Hilfe aber das funktioniert bei mir nicht.
Ich war auf der Seite aber die benutzen


gl.glTexParameterfv(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_CLAMP);

oder

gl.glTexParameteriv(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_CLAMP);

bei mir geht nur

gl.glTexParameterf(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_CLAMP);

Ich habe mit folgendem code
Code:
  	gl.glEnable(GL.GL_TEXTURE_2D);
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
        gl.glBegin(GL.GL_QUADS);

    	gl.glTexCoord2f(0f,0f);
    	gl.glVertex3f(0.0f, 0.0f, 0.0f);
    	
    	gl.glTexCoord2f(1f,0f);
    	gl.glVertex3f(3.0f, 0.f, 0.0f);
    		
    	gl.glTexCoord2f(1f,1f);
        gl.glVertex3f(3.0f, 3.0f, 0.0f);
            
        gl.glTexCoord2f(0f,1f);
        gl.glVertex3f(0.0f, 3.0f, 0.0f);
        gl.glEnd();
        gl.glDisable(GL.GL_TEXTURE_2D);
ein Viereck gemalt und benutze eine Textur von der Grösse 64x64 Pixel
und egal ob ich GL_CLAMP oder GL_REPEAT einsetze die Textur wird immer über das ganze Viereck gelegt. Sie sieht ziemlich grob und verschwommen aus weil sie total gestreckt wird.
Sie wird leider nicht wie eine Kachel auf das viel grössere Viereck gelegt und wiederholt.

Was mache ich denn falsch?

Hier der code mit dem ich die Textur anlege.
Code:
public void defineTexture(GL gl,GLU glu)
{      
      gl.glShadeModel(GL.GL_SMOOTH);              // Enable Smooth Shading
      
      gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);	// Really Nice Perspective Calculations
      
      txg = new TextureGenerator();
      
      texture = txg.genTexture(gl);
      gl.glBindTexture(GL.GL_TEXTURE_2D,texture);
      
      BufferedImage img = txg.readPNGImage("muster_01.png");
      
      txg.makeRGBTexture(gl, glu, img, GL.GL_TEXTURE_2D, false);
      gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MIN_FILTER,GL.GL_LINEAR);
      gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MAG_FILTER,GL.GL_LINEAR);
  	
      gl.glTexParameterf(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_REPEAT);
      gl.glTexParameterf(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL.GL_REPEAT);
  	  
      gl.glTexEnvf(GL.GL_TEXTURE_ENV,GL.GL_TEXTURE_ENV_MODE,GL.GL_REPLACE);
}
Ich bräuchte mal ein stück code von irgend jemand bei dem das auch auf dessen Rechner funktioniert.


estartu
 

Evil-Devil

Top Contributor
Hmm, welche API nutzt du? JOGL, LWJGL, Java3D? Hast schonmal geschaut ob GL_CLAMP den umgekehrten Effekt erzeugt? Am Code seh ich eigentlich nichts verkehrtes.
 

Der Müde Joe

Top Contributor
etwas, was ich früher mal gemacht habe mit Jogl:
Code:
private Texture treeTex = null;

private void loadGLTextures(String[] strName) {
    	treeTex = TextureLoader.loadTextures(strName[1]);
}

private void drawTree(GL gl){
	    int x = 200;
	    int z = 200;
	    int y = height(heightMap, x, z);
		
	    drawIt(trees, treeTex, gl);
} 

private void drawIt(float[][] verts, Texture tex, GL gl){
	    // do not draw the transparent parts of the texture
	    gl.glEnable(GL.GL_BLEND);
	    gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
	    // don't show source alpha parts in the destination
	
	    // determine which areas of the polygon are to be rendered
	    gl.glEnable(GL.GL_ALPHA_TEST);
	    gl.glAlphaFunc(GL.GL_GREATER, 0);  // only render if alpha > 0
	
	    // enable texturing
	    gl.glEnable(GL.GL_TEXTURE_2D);
	    tex.bind();
	
	    // replace the quad colours with the texture
	    gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
		for(int i = 0 ; i < 50 ; i++){
		    gl.glBegin(GL.GL_QUADS);
			    gl.glTexCoord2f(0.0f, 0.0f); gl.glVertex3f(verts[i][0], verts[i][1], verts[i][2]); 
			    gl.glTexCoord2f(1.0f, 0.0f); gl.glVertex3f(verts[i][3], verts[i][4], verts[i][5]);
			    gl.glTexCoord2f(1.0f, 1.0f); gl.glVertex3f(verts[i][6], verts[i][7], verts[i][8]);
			    gl.glTexCoord2f(0.0f, 1.0f); gl.glVertex3f(verts[i][9], verts[i][10], verts[i][11]);
		    gl.glEnd();
		}
		
	    gl.glDisable(GL.GL_TEXTURE_2D);

	    // switch back to modulation of quad colours and texture
	    gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE);
	    gl.glDisable(GL.GL_ALPHA);  // switch off transparency
	    gl.glDisable(GL.GL_BLEND);
	}	
	
	private void renderLineToTarget(GL gl){
			gl.glColor3f(1.0f,0.0f,0.0f);	
		
			gl.glBegin(GL.GL_LINE_STRIP);
	          	for(int i = 0 ; i < list.size(); i++){
	  				gl.glVertex3i(	list.get(i).getX(), 
	  								height(heightMap,list.get(i).getX(),list.get(i).getY())+2, 
	  								list.get(i).getY());	
	          	}
	    	gl.glEnd();
	    	
	    	gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
}

hab nur kurz überflogen und ist auch schon ne weile her...
aber war bei mir ziemlich gut...
vielleicht hilfts ja

EDIT:
da seh ich grad:
Code:
public class TextureLoader{


	/*
	 *returns the Texture
	 *input....the String filename
	 */
	public static Texture loadTextures(String fnm){
	    return loadTexture(fnm);
	}
	
	private static Texture loadTexture(String fnm){
		
	    String fileName = fnm;
	    Texture tex = null;
	    try {
	      tex = TextureIO.newTexture( new File(fileName), true);
	     tex.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
	     // tex.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
	    }
	    catch(Exception e)
	    { System.out.println("Error loading texture " + fileName);  }
	
	    return tex;
	} 	
}

das laden war ja in ner anderen Klasse
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
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
F VertexBuffer & Texturen? Spiele- und Multimedia-Programmierung 5
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
T VBOs und Texturen Spiele- und Multimedia-Programmierung 2
B Probleme mit Texturen Spiele- und Multimedia-Programmierung 7
J Partikel Texturen verbinden Spiele- und Multimedia-Programmierung 6
S LWJGL Texturen Spiele- und Multimedia-Programmierung 14
P LWJGL Texturen Spiele- und Multimedia-Programmierung 6
D LWJGL - 2D Texturen werden nicht dargestellt Spiele- und Multimedia-Programmierung 12
T lwjgl Texturen werden nicht gezeichnet Spiele- und Multimedia-Programmierung 23
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
B Texturen Deckkraft Spiele- und Multimedia-Programmierung 7
F Kleine GL Texturen auf grosse GL Textur kopieren? Spiele- und Multimedia-Programmierung 24
BattleMaster246 Alpha Kanal in Texturen Spiele- und Multimedia-Programmierung 7
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
R Texturen auf Strichmännchen Spiele- und Multimedia-Programmierung 10
S java /jogl /Texturen mit j3d Spiele- und Multimedia-Programmierung 3
A java3d, fehlende texturen unter windows (graka onboard) Spiele- und Multimedia-Programmierung 4
lumo JOGL und Texturen Spiele- und Multimedia-Programmierung 3
D Blender Model mit Texturen in Java Importieren Spiele- und Multimedia-Programmierung 10
G Verschiedene Texturen Spiele- und Multimedia-Programmierung 2
L Texturen? Spiele- und Multimedia-Programmierung 2
T Problem mit Texturen im Web. Spiele- und Multimedia-Programmierung 4
M Wie kriege ich das mit den Texturen nur hin? Spiele- und Multimedia-Programmierung 9
D 2 Texturen & transparenz Spiele- und Multimedia-Programmierung 16
F Texturen laden? Spiele- und Multimedia-Programmierung 3
M Universe mit texturen und lichteffekten Spiele- und Multimedia-Programmierung 10
M Format für Texturen Spiele- und Multimedia-Programmierung 5
M Laden von Texturen nicht möglich Spiele- und Multimedia-Programmierung 11
L Wie kann ich mehrere Texturen auf ein Object File mappen Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben