Guten Nachmittag liebe
DP,
ich wage im Moment meine ersten Schritte Richtung
OpenGl. Das funktioniert soweit auch schon, zumindest bei einem simplen 2D-Spiel
Das einzige Problem was ich im Moment noch habe: Meine Texturen werden nicht transparent dargestellt.
Erstmal wie ich die Texturen erstelle:
Ich nehme ein Bild, z.B. ein JPeg von einem Auto, öffne es in Photoshop, füge einen Alphakanal hinzu,
und färbe nun auf diesem die Bereiche schwarz, die ausgeblendet werden sollen. Das ganze wird als .tga gespeichert.
Nun die Frage, welche Befehle braucht es um
OpenGL zu sagen dass es diesen Alphakanal auch nutzen soll?
Zum Laden der Texturen benutze ich die Textures.pas v. 1.03,
und beim Rendern rufe ich die Textur wie folgt auf:
Delphi-Quellcode:
glPushMatrix;
glColor3f(1, 1, 1);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glBindTexture(GL_TEXTURE_2D, MyTex);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.1);
DrawQuad(XPos,YPos,Depthlayer, SizeX,SizeY);
glPopMatrix;
Wobei in MyTex dementsprechend die Textur geladen ist, und XPos, YPos etc erklären sich hoffentlich von selbst.
Doch trotz allen Versuchen zeigt er die Textur nicht durchsichtig an.
[Edit] Anscheinend liegt mein Fehler auch gar nicht im Quelltext, sondern daran wie ich die Textur in Photoshop erstelle, mit einer Textur aus einem Tutorial funktioniert alles super. Von daher wäre es nett, wenn ihr mir erklären könntet, worauf ich dabei genau zu achten habe.
Bisher läuft es so: Bild Reinladen, Reiter "Kanäle" auswählen, Kanal hinzufügen, dann fügt er den Kanal "Apha1" hinzu. Auf diesem markiere ich die Transparenz dann mit Schwarz/weiß.
Doch das Ergebnis ist unverändert mein Bild, mit weißem Hintergrund.
Habe die .tga datei angehängt, in Form eines .rar Archives, tga selbst geht leider nicht
[/Edit]
Okey, habs durch Googeln schon gelöst, wer auch mal das Problem hat: Unter den Speicheroptionen für TGA erst "Alpha-Kanäle" anklicken und dann als 32-Bit TGA Speichern, dann bleibt auch der Alpha Channel erhalten.