OpenGL - Teil einer Textur zeichnen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
D-eath
Beiträge: 51
Registriert: 28.08.2009, 19:37
Alter Benutzername: TrunkZ
Echter Name: Thomas

OpenGL - Teil einer Textur zeichnen

Beitrag von D-eath »

Hallo,

bin noch relativ neu in der OpenGL Programmierung.
Ich möchte ein Quad mit einem Teil einer von mir vorher geladenen Textur texturieren:

Code: Alles auswählen

glBindTexture(GL_TEXTURE_2D, sprite.i_Texture);
	glBegin(GL_QUADS);
		glTexCoord2i(i_X_Texture, i_Y_Texture);
		glVertex2i(sprite.i_X, sprite.i_Y);

		glTexCoord2i(i_X_Texture, i_Y_Texture + i_Width);
		glVertex2i(sprite.i_X, sprite.i_Y + i_Width);

		glTexCoord2i(i_X_Texture + i_Height, i_Y_Texture + i_Width);
		glVertex2i(sprite.i_X +  i_Height, sprite.i_Y + i_Width);

		glTexCoord2i(i_X_Texture + i_Height, i_Y_Texture);
		glVertex2i(sprite.i_X +  i_Height, sprite.i_Y);	
	glEnd();
i_X_Texture / i_Y_Texture sind hierbei die X / Y-Koordinaten auf der Textur (bspw. 192, 32) und i_Width und i_Height sind die rechten und unteren Kanten des Ausschnitts.
Leider bekomme ich hier nicht den Ausschnitt, sondern einen braunen Pixel zurück.

Wie kann ich denn die Texturkoordinaten so transformieren, dass ich die in Pixeln angeben kann?
Bin irgendwie momentan zu verplant, um diese Berechnung richtig zu machen.

Grüße
Eyeball
Beiträge: 1
Registriert: 10.12.2003, 13:34
Benutzertext: EDV-Helpdesk ist doof
Alter Benutzername: Eyeball
Echter Name: René
Wohnort: Linz, Austria
Kontaktdaten:

Re: OpenGL - Teil einer Textur zeichnen

Beitrag von Eyeball »

Textur-Koordinaten werden bei OpenGL im Bereich 0,0 bis 1,1 angegeben.

du musst also Position in der Textur durch die gesamte Größe der Textur dividieren, dann erhälst du die richtigen Koordinaten

z.B.:

Code: Alles auswählen

 x_texPos       
 -------------        = x_texCoord
 x_maxTex

hoffe konnte dir weiterhelfen
D-eath
Beiträge: 51
Registriert: 28.08.2009, 19:37
Alter Benutzername: TrunkZ
Echter Name: Thomas

Re: OpenGL - Teil einer Textur zeichnen

Beitrag von D-eath »

Danke, das war bereits die Lösung meines Problems. ;)
D-eath
Beiträge: 51
Registriert: 28.08.2009, 19:37
Alter Benutzername: TrunkZ
Echter Name: Thomas

Re: OpenGL - Teil einer Textur zeichnen

Beitrag von D-eath »

Wie kann ich denn hier noch zusätzlich mit der Breite eines Ausschnitts variieren? Sodass ich zB. 32, 32 - 48, 48 zeichnen kann.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: OpenGL - Teil einer Textur zeichnen

Beitrag von Zudomon »

Wenn ich die Frage richtig verstehe, dann musst du auch hier nur die Werte, die du in Pixel angibst in Texturkoordinaten umrechnen. Wenn du also 32 - 48 haben möchtest und deine Textur z.B. 64 Pixel groß ist, dann brauchst auch nur jeweils 32 / 64 und 48 / 64 rechnen. Aber am besten gewöhnst du dir ab, in Pixel zu denken. Denn wenn du eine doppelt so große Textur benutzt, ändert sich an den Texturkoordinaten garnichts.
Antworten