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

Aktuelle Zeit: Fr Jul 04, 2025 04:58

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Mai 26, 2013 15:20 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Moin.
Da meine Bilder nicht transparent waren, habe ich ein wenig mit glBlendFunc herum experimentiert.
Meine Bilder sind jetzt transparent ^^ Jedoch sieht es etwas anders aus, als es erwartet werden würde.
So sieht es jetzt aus:
http://s7.directupload.net/file/d/3267/o9jjtqu5_png.htm

Und so sollte die Map aussehen:
http://s14.directupload.net/file/d/3267/gvrb6l8w_png.htm

Hiermit starte ich mein Blending:
Code:
  1.  
  2. glEnable(GL_BLEND);
  3. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  4.  

und dies ist meine Blend Prozess Funktion, die von bspw. Shapes/Primitiven aufgerufen werden (nicht unbedingt von Belang, aber ich möchte Vollständig sein):
Code:
  1.  
  2. void _processBlendMode() const {
  3.     glPushAttrib(GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT);
  4.     scope(exit) glPopAttrib();
  5.    
  6.     final switch (this._blendMode) {
  7.         // Alpha blending
  8.         case BlendMode.Alpha:
  9.             glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  10.             break;
  11.             // Additive blending
  12.         case BlendMode.Add:
  13.             glBlendFunc(GL_SRC_ALPHA, GL_ONE);
  14.             break;
  15.             // Multiplicative blending
  16.         case BlendMode.Multiply :
  17.             glBlendFunc(GL_DST_COLOR, GL_ZERO);
  18.             break;
  19.             // No blending
  20.         case BlendMode.None:
  21.             glBlendFunc(GL_ONE, GL_ZERO);
  22.             break;
  23.     }
  24.    
  25.     if (this._useBlendColor && this._blendMode != BlendMode.None) {
  26.         float[4] col = this._blendColor.convertToGL();
  27.        
  28.         version(all)
  29.             glBlendColor(col[0], col[1], col[2], col[3]);
  30.         else
  31.             glColor4f(col[0], col[1], col[2], col[3]);
  32.     }
  33. }
  34.  


und dies mache ich kurz vorm Blenden meiner TileMap:
Code:
  1.  
  2. glPushAttrib(GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT);
  3. scope(exit) glPopAttrib();
  4.  
  5. glBlendFunc(GL_ONE, GL_ZERO); /// Reset the blend func
  6.  


Muss ich das "resetten" der BlendFunc anders machen? Und wenn ja, wie am besten? Oder liegt der Fehler ganz woanders?
Bevor ich angefangen habe, mit den Blendfuncs zu experiementieren, sah die Map aus wie erwartet, nur eben mit nicht transparenten Sprites.

edit:
Anstatt zu resetten habe ich auch mal probiert, glDisable(GL_BLEND); zu probieren. Hilft nichts.
Und mit
Code:
  1. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
sehe ich gar nichts mehr von der Map, nur noch die Wolken und meine Figur. Der Rest ist weiß.


Zuletzt geändert von rswhite am So Mai 26, 2013 18:16, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mai 26, 2013 18:15 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Solved. Es lag am BGRA Format. Komisch nur, dass zu Anfang die Map trotz alle dem normal aussah. Als ich dann alle BlendFuncs wegnahm und das Teil trotzdem diese blaue Farbe hatte, wurde ich skeptisch.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.013s | 17 Queries | GZIP : On ]