# [LWJGL] Textur wird falsch angezeigt



## Creylon (16. Okt 2012)

Hallo,
beim Zeichnen meiner Textur wird das Bild komisch gequetscht, obwohl ich die richtigen Maße verwende.

Links das Original, rechts das gequetschte







Meine Draw Methode:


```
public void DrawTexture(Texture key, float X, float Y, int Width, int Height, float Rotation)
    {
    	key.bind();

        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

        glLoadIdentity();
		if(GameState == 1)
		{
	        glTranslatef((X - TranslateX)*Scale + (Width*Scale)/2, (Y - TranslateY)*Scale + (Height*Scale)/2, 0.0f);
	        glRotatef(Rotation, 0.0f , 0.0f, 1.0f);
	        glTranslatef(-X*Scale - (Width*Scale)/2, -Y*Scale - (Height*Scale)/2, 0.0f);
		}

        glScaled(Scale, Scale, 1);
                

    	glBegin(GL_QUADS);
			glColor4f(1f, 1f, 1f, 1f);
    		glTexCoord2f(0.0f, 0.0f);
    		glVertex2f(X, Y);
    		glTexCoord2f(1.0f, 0.0f);
    		glVertex2f(X + Width, Y);
    		glTexCoord2f(1.0f, 1.0f);
    		glVertex2f(X + Width, Y + Height);
    		glTexCoord2f(0.0f, 1.0f);
    		glVertex2f(X, Y + Height);
    	glEnd();
    }
```

Wär toll, wenn mir jemand helfen kann.


----------



## Creylon (17. Okt 2012)

Hat keiner eine Idee?


----------



## Evil-Devil (17. Okt 2012)

Was sind denn "die richtigen" Maße?

Für mich sieht das auf dem Screenshot zunächst einmal ganz normal aus. Also wirst du nicht die richtigen Maße genommen haben.


----------



## Creylon (18. Okt 2012)

Die richtigen Maße sind 16x48
der linke Traktor ist doch eindeutig kürzer gestaucht. Außerdem sieht man ganz unten noch so einen weißen "Rest" oder so.


----------



## Evil-Devil (18. Okt 2012)

Also ein Seitenverhältnis von 1:3. Dann muss dein Quad auch 3 Welteinheiten hoch und 1 Welteinheit breit sein bzw. in einem 1:3 Verhältnis stehen.

Was man bei deinem Code jetzt leider nicht sieht ob du eine Orthogonale oder Perspektivische Ansicht nutzt und welche Werte du für Width/Height übergibst.


----------



## Creylon (19. Okt 2012)

Bitte entschuldige, aber ich bin ein echter Anfänger in Sachen Kamera und Matrizen..


```
glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
		glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);
        glEnable(GL_BLEND); 
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
```

Ich finde es nur sehr komisch, da bisher alle Texturen richtig angezeigt wurden.


----------



## Creylon (20. Okt 2012)

Ich habe in einem Video gehört, dass OpenGL nur Texturen vernünftig wiedergeben kann, wenn die Seiten aus einer Zahl mit Exponent 2 bestehen kann. Also 2x2, 4x4, 16x16, 48x48, 64x64 ...

Gibt es keinen anderen weg Texturen zu zeichnen?


----------



## Evil-Devil (20. Okt 2012)

Die Textur ist doch vom Format her ok. Hast du vielleicht ein kurzes Beispiel PRogramm zur Verfügung stellen? Irgendwie kann man aus den bisherigen Infos nicht genug sagen. Oder sofern das aktuell nicht zu lang ist selbiges posten? Vor allem sagst du ja das andere Texturen korrekt angezeigt werden.


----------



## Guest2 (20. Okt 2012)

Moin,

die Größenbeschränkung auf den 2er Exponent stammt noch aus der OpenGL Anfangszeit. Die letzten Karten die damit Probleme hatten dürften aber inzwischen etwa 10 Jahre alt sein. 

(Grundsätzlich ist POT keine schlechte Idee, z.B. fürs mipmapping, aber hier dürfte das egal sein)

Viele Grüße,
Fancy


----------



## Creylon (20. Okt 2012)

Danke für deine Antwort, aber wieso wird nun die Textur nicht so angezeigt, wie sie nunmal ist?

Ich häng ständig irgendwo in meinem Projekt, weil ich das mit den Texturen nicht hinbekomme. Es gibt ja auch keine Tutorials, die einem das ganze vollständig zeigen..

Ich werde mal eben ein kleines Projekt erstellen und hochladen...


----------



## Creylon (20. Okt 2012)

Das Problem müsste eindeutig zu erkennen sein.

Eclipse-Projekt hier


----------



## Guest2 (20. Okt 2012)

Das liegt an dem Slick. Oft ist es besser, wenn man so etwas selber macht, dann ist der Lerneffekt auch größer.

Hier ist Dein Beispiel umgebaut und etwas aufgeräumt.

Viele Grüße,
Fancy


----------



## Creylon (20. Okt 2012)

Danke für deine Hilfe!

Das mit dem selber schreiben ist ein Problem, wenn es keinerlei, wenn nur schwer findbare infos dazu gibt.


----------

