# Slick Texture laden Fehler



## CookieSoft (10. Aug 2012)

Hallo,
ich habe da ein Problem, ich habe ein Bild:





[10x10px](In Photoshop geladen)
So jetzt habe ich die Textur in mein Spiel geladen und wenn ichs starte sieht das so aus:




So lade ich die Textur:

```
public class Textures {
    public static Texture getTexture(String file){
        try {
            return TextureLoader.getTexture("PNG", new FileInputStream("res/" + file + ".png"));
        } catch (IOException ex) {
            Logger.getLogger(Textures.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}
```
Und so zeig ich es an:

```
Texture heart = Textures.getTexture("heart");
                
                heart.bind();
                
                glBegin(GL_QUADS);
                  glTexCoord2f(0, 0);
                  glVertex2f(10, 10);
                  glTexCoord2f(heart.getTextureWidth(), 0);
                  glVertex2f(200, 10);
                  glTexCoord2f(heart.getTextureWidth(), heart.getTextureHeight());
                  glVertex2f(200, 200);
                  glTexCoord2f(0, heart.getTextureHeight());
                  glVertex2f(10, 200);
                glEnd();
```
Hab schon ein wenig gegooglet hab aber keine Antwort gefunden. Hoffe jemand kann mir helfen!:toll:


----------



## Evil-Devil (11. Aug 2012)

Naja, deine Textur ist kleiner als das Quad auf dem es gezeichnet wird. Somit wird die Textur einfach wiederholt. Ich meine man kann SLICK auch sagen, dass es nicht wiederholt werden soll.


----------



## JCODA (11. Aug 2012)

Zwar kenn ich mich mit Slick nicht aus, aber bei der LWJGL gibt man mit 
	
	
	
	





```
glTexCoord2f(float x, float y);
```
 relative Koordinaten an, also wäre 1.0f sozusagen 100% der Länge.


----------



## CookieSoft (11. Aug 2012)

Naja aber die Textur wird auch falschrum angezeigt... Und wie macht man es, dass sich die Textur nicht wiederholt?
Und wie ihr seht ist die Textur auch abgeschnitten.


----------



## tdc (11. Aug 2012)

Wie JCODA bereits gesagt hat: bisher zeichnest du die Textur heart.getTextureWidth() * heart.getTextureHeight() mal. Die Texturkoordinaten werden bei OpenGL nicht in Pixeln, sondern relativ angegeben. Wenn du das Bild nur einmal zeichnen willst, müsste es so aussehen:

```
Texture heart = Textures.getTexture("heart");
                
                heart.bind();
                
                glBegin(GL_QUADS);
                  glTexCoord2f(0, 0);
                  glVertex2f(10, 10);
                  glTexCoord2f(1, 0);
                  glVertex2f(200, 10);
                  glTexCoord2f(1, 1);
                  glVertex2f(200, 200);
                  glTexCoord2f(0, 1);
                  glVertex2f(10, 200);
                glEnd();
```

Damit sollte das mehrfach zeichnen und das abgeschnitten-sein behoben sein, wenn es noch falschrum ist, musst du einfach
glTexCoord2f(1, 0);
und
glTexCoord2f(0, 1);
vertauschen.


----------



## CookieSoft (13. Aug 2012)

Danke, ich hab grad auch eine Möglichkeit gefunden. Ich habe zuerst, damit die Textur nicht so unscharf ist ein 
	
	
	
	





```
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
```
 eingefügt und dann eben mit heart.getWidth() und heart.getHeight() gearbeitet.


----------



## Kennwort (13. Aug 2012)

Was spricht gegen
Image (Slick - The 2D Library)?

```
new Image("res/" + file + ".png")
```

Grüße,
Kennwort


----------

