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

Aktuelle Zeit: Fr Jul 18, 2025 13:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Blending (Fade Effekt)
BeitragVerfasst: So Okt 14, 2007 18:31 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Hallo,

Ich habe ein Quadrat, welches ich im Ortho Modus über den kompletten Bildschirm lege.
Jetzt mache ich den Weißen Teil davon Transparent, mittels:
Code:
  1.  
  2.     glEnable(GL_BLEND);
  3.     glBlendFunc(gl_ZERO, gl_SRC_COLOR);
  4.  

Soweit so gut, allerdings möchte ich nun, dass der schwarze Rand zu 50% transparent ist.
Ein glColor4f(1,1,1,0.5) hilft hier nicht.
Ich habe das schonmal hinbekommen, es müsste gehen, indem man andere Parameter für glBlendFunc wählt,
die Frage ist welche ? Ein paar habe ich schon ausprobiert, aber so ganz geklappt hat es dann doch net \";)\"

Das selbe tut scheinbar auch:
Code:
  1.  
  2. glBlendFunc(gl_ONE_MINUS_DST_ALPHA, gl_SRC_COlOR);
  3.  


hm wie war das noch :P

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 14, 2007 22:04 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also zum mitschreiben. Du möchtest das Innere des Bildschirms komplett ausfaden, der Rand aber nur zu 50% ?

Falls ja, dann nimm nicht 1Quadrat sondern eins für die Mitte und entsprechend dann noch welche für den Rand. Dort kannst du dann die Transparenz jeweils regeln wies dir lustig ist. Du kannst sogar den Rand fließend übergehen lassen, indem du den inneren Vertices mit glColor4f einen anderen Alpha-Wert zuweist als den äußeren.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 15, 2007 10:15 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
ich habe vergessen zu sagen, dass auf diesem Quad eine Textur liegt, diese ist schwarz und in der Mitte ist ein weißer Schriftzug, dieser soll immer zu 100% transparent sein, den Rest möchte ich variieren können.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 15, 2007 10:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Seth,

probier doch mal glBlendFunc(gl_DST_COLOR, gl_ONE_MINUS_SRC_ALPHA) und als glColor (alpha, alpha, alpha, alpha).

Für die weisse Schrift gilt dann : (alpha, alpha, alpha, alpha) * DST_COLOR + (1 - alpha) * DST_COLOR = DST_COLOR (100 % Transparenz)
und für den schwarzen Rand : (0, 0, 0, alpha) * DST_COLOR + (1 - alpha) * DST_COLOR = (1 - alpha) * DST_COLOR (gesteuerte Tranzparenz)

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 15, 2007 11:04 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hi,

das kommt dem ganzen schon mächtig nahe, allerdings ist das schwarz am anfang net komplett transparent, sodass wenn ich das einblenden will, man immer noch einen schnitt erkennt.

ich werde glColor4f(1, 1, 1, alpha) benutzen, das sieht gut aus.

danke

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 15, 2007 11:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also wenn du auf dem Quad eine Textur drauf hast wäre es da nicht evtl praktischer, wenn du den Alphakanal der Textur benutzt? Oder ist das nicht möglich/tust du bereits? Denn das Blenden mittels DST_COLOR würde die Farben aus dem Framebuffer auslesen. Habe schon mal irgendwann irgendwo gelesen, dass es unter umständen auch langsamer sein könnte. Will da keine Hand für ins Feuer legen.

Alphakanal in der Textur: Die Schrift immer transparent würde bedeuten, dass im Alphakanal nullen stehen und für den Rest des Kanals so wie du es bräuchtest. Wenn du diese Textur dann normal Mittels GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA blendest kannst du mit dem Alphawerrt bei glColor ganz leicht die Sichtbarkeit des Rests setzen. Die Schrift wäre aber immer transparent.

Falls ich mich da gerade vertue dann häng mal bitte ein Bild davon an. Es fällt mir nicht gerade leicht mir das sinnvoll vorzustellen. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 15, 2007 13:44 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
so könnte ich das auch machen, aber die textur ist ja prinzipiell ihr eigener alpha kanal nur invertiert.
so wie ichs jetzt hab läuft das ;)

mfg


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.019s | 19 Queries | GZIP : On ]