LWJGL Hintergrund

Yissu

Mitglied
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
 
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
 
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?
 
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
 
Java:
		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.
 

Anhänge

  • Bildschirmfoto vom 2012-10-20 19:33:45.png
    Bildschirmfoto vom 2012-10-20 19:33:45.png
    44,5 KB · Aufrufe: 25
Zuletzt bearbeitet:
Hab jetzt mal mit 2D verwendet.

InitGL:
Java:
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:

Java:
		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...
 
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
 

Neue Themen


Zurück
Oben