# LWJGL Hintergrund



## Yissu (20. Okt 2012)

Hallo Leute,

Ich möchte gerne eine Textur über das ganze Fenster zeichnen also ein Hintergrund. Wie kann man dies machen?
Ich hab mir gedacht das mit einem Quad zu machen aber das ist doch ein bisschen umständlich und nicht Größen flexibel oder?

MfG
Yissu


----------



## Guest2 (20. Okt 2012)

Moin,

ein Quad bzw. 2 Dreiecke sind genau richtig. Was Du mit "nicht Größen flexibel" meinst, ist mir nicht klar. Es ist genau so groß, wie Du angibst, dass es sein soll.

Viele Grüße,
Fancy


----------



## Yissu (20. Okt 2012)

Naja ich meine ich muss ja ein Quad erzeugen was immer genau die größe des Fensters abdeckt was aber wenn man die Fenster Größe ändert?


----------



## Guest2 (20. Okt 2012)

Das hängt davon ab, was Du für ein Koordinatensystem nutzt. In 3D ist es z.B. üblich das links unter -1/-1 ist und rechts oben 1/1, dann sind die Koordinaten eh unabhängig der Fenstergröße. Bei 2D sieht man schon mal das Fensterkoordinaten genutzt werden, also 0/0 bis breite/höhe. Dann musst Du auch die Koordinaten des Quads entsprechend anpassen. Aber auch das ist kein Problem, da Du das Quad eh jedes Frame neu zeichnen musst und Du auf eine die Größenänderung des Fensters sowieso reagieren musst, um die Projection-Matrix anzupassen. Auch das Koordinatensystem zwischendrin zu ändern ist kein Problem.

Viele Grüße,
Fancy


----------



## Yissu (20. Okt 2012)

```
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

		GL11.glLoadIdentity();
		GL11.glBegin(GL11.GL_QUADS);
		splashlogo.bind();
		GL11.glColor3f(1, 1, 1);
		GL11.glTexCoord2f(0, 0);
		GL11.glVertex3f(-1f, -1f, -1.1f);
		GL11.glTexCoord2f(1, 0);
		GL11.glVertex3f(1f, -1f, -1.1f);
		GL11.glTexCoord2f(1, 1);
		GL11.glVertex3f(1f, 1f, -1.1f);
		GL11.glTexCoord2f(0, 1);
		GL11.glVertex3f(-1f, 1f, -1.1f);
		GL11.glEnd();
```

So hab ich es mal gemacht allerdings sieht das ganze so aus wie im Anhang.

Edit: Okay hatte Positionen vertauscht allerdings bleibt ein schwarzer Rand dafür ist die Textur aber nicht aufm Kopf.


----------



## Yissu (20. Okt 2012)

Hab jetzt mal mit 2D verwendet.

InitGL:

```
GL11.glMatrixMode(GL11.GL_PROJECTION);
		GL11.glLoadIdentity();
		GL11.glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
		GL11.glMatrixMode(GL11.GL_MODELVIEW);
```

und so zeichnen:


```
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
		
		GL11.glLoadIdentity();
		GL11.glBegin(GL11.GL_QUADS);
		splashlogo.bind();
		GL11.glColor3f(1, 1, 1);
		GL11.glTexCoord2f(0, 0);
		GL11.glVertex2i(0, 0);
		GL11.glTexCoord2f(1, 0);
		GL11.glVertex2i(Display.getWidth(), 0);
		GL11.glTexCoord2f(1, 1);
		GL11.glVertex2i(Display.getWidth(), Display.getHeight());
		GL11.glTexCoord2f(0, 1);
		GL11.glVertex2i(0, Display.getHeight());
		GL11.glEnd();
```

Leider bleibt weiterhin Teile vom Fenster schwarz...


----------



## Guest2 (20. Okt 2012)

Am einfachsten ist es, wenn Du ein KSKB angibst (kurzes selbstständig kompilierbares Beispiel = komplettes Beispiel, möglichst kompakt) und genau beschreibst, wie sich der Hintergrund verhalten soll, falls das Höhen/Breiten-Verhältnis des Hintergrundbildes nicht mit dem des Fensters übereinstimmt (verzerren, abschneiden horizontal oder abschneiden vertikal). Dann lässt sich am schnellsten zeigen, wie man das lösen kann.

Viele Grüße,
Fancy


----------



## Yissu (20. Okt 2012)

So hier die JAR hoffe das es mit den natives geklappt hat.

BackgroundTest.jar (1,10 MB) - uploaded.to

Source kommt morgen geh jetzt schlafen und hatte nur die jar gerade


----------

