Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 16:57

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glBitmap, PNGs, Transparenz...
BeitragVerfasst: So Jun 18, 2006 17:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Sollte eigentlich ganz simpel sein... Eigentlich...
Ich speicher mit Photoshop eine .png (Profil PNG24), will die mit glBitmap mitsamt Transparenzen anzeigen.
Code:
  1.  
  2.   glMatrixMode(GL_MODELVIEW);
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.   glLoadIdentity;
  5.  
  6.   glTranslatef(0, 0, -5);
  7.   fTexture.Bind;
  8.   glBegin(GL_QUADS);
  9.     glTexCoord2f(0, 0);glVertex3f(0, 0, 0);
  10.     glTexCoord2f(1, 0);glVertex3f(1, 0, 0);
  11.     glTexCoord2f(1, 1);glVertex3f(1, 1, 0);
  12.     glTexCoord2f(0, 1);glVertex3f(0, 1, 0);
  13.   glEnd;
  14.   glEnable(GL_BLEND);
  15.   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  16.   glBegin(GL_QUADS);
  17.     glTexCoord2f(0, 0);glVertex3f(0, 0, 0);
  18.     glTexCoord2f(1, 0);glVertex3f(1, 0, 0);
  19.     glTexCoord2f(1, 1);glVertex3f(1, 1, 0);
  20.     glTexCoord2f(0, 1);glVertex3f(0, 1, 0);
  21.   glEnd;
  22.   glDisable(GL_BLEND);
  23.  

ist meine Renderroutine...
Vorher lade ich die Textur noch so:
Code:
  1.  
  2.   fTexture := TglBitmap2D.Create; // Instanz der Klasse erstellen
  3.   fTexture.LoadFromFile('test.png'); // Datei laden
  4.  
  5.   fTexture.AddAlphaFromFile('test.png'); // Alphakanal aus Datei laden
  6.   fTexture.GenTexture; // geladene Textur an OpenGL übergeben
  7.   glDepthFunc(GL_LEQUAL);
  8.  

Also eigentlich alles nettes Copy & Paste...
Das Problem ist halt, dass die PNG nicht transparent angezeigt wird...
Anbei die PNG und ein Screenshot, wie es momentan aussieht.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 18, 2006 18:18 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
hast du blending aktiviert? und die richtige funktion gewählt?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 18, 2006 18:50 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Das Problem sehe ich in dem AddAlpha. Das glBitmap sollte schon vorher automatisch den Alphakanal ausgelesen und eingefügt haben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 18, 2006 19:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Genau. Sobald ein Alphakanal in der Datei enthalten ist musst du nicht extra AddAlpha* aufrufen. Der wird automatisch mit geladen. Und bei AddAlpha* wird normal ein Alphakanal aus dem RGB Werten berechnet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 18, 2006 19:51 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Muss Blending nicht trotzdem aktiviert sein?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 18, 2006 20:06 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Zeile 14 im ersten Codeblock ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 19, 2006 08:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja das stimmt. Aber jetzt du es sagst wird es erst einmal immer ohne Blending gezeichnet und anschließend geblendet. Das würde bedeuten es wäre immer vollkommen sichtbar. Also da würde ich auch das erste Quad weglassen und nur das geblendete zeichnen. Dann sollte es so aussehen wie gedacht ist. Hoffe ich. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 19, 2006 16:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Besten dank, funktioniert. :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]