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

Aktuelle Zeit: Mi Jul 16, 2025 16:04

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



Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: JOGL: Frage zu Transparenz
BeitragVerfasst: Do Okt 21, 2010 23:25 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Ich möchte gerne eine halbtransparente Fläche in JOGL zeichnen habe aber so meine Probleme damit.

Hier mal mein Code:
Code:
       gl.glEnable(GL.GL_BLEND);         
       gl.glDisable(GL.GL_DEPTH_TEST);
       
      gl.glColor4f(1.0f,1.0f,0.0f,0.5f);
      gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);      
      
      gl.glBegin(GL.GL_QUADS);
      for(int i=0; i<newlines;i++){
         gl.glVertex3f(-te.getLength()/2,-te.getWidth()/2,0);
         gl.glVertex3f( te.getLength()/2, -te.getWidth()/2, 0);
         gl.glVertex3f( te.getLength()/2,  te.getWidth()/2, 0);
         gl.glVertex3f(-te.getLength()/2,  te.getWidth()/2, 0);
      }
      gl.glEnd();
      
      gl.glDisable(GL.GL_BLEND);      
      gl.glEnable(GL.GL_DEPTH_TEST);


Egal welchen Alpha Wert ich bei color4f einsetze, die Fläche ist immer zu 100% transparent (oder wird sie gar nicht gezeichnet??). Wenn ich das gl.glEnable(GL.GL_BLEND); habe ich keinerlei Transparenz. Ich denke es genau so wie in den NeHe Tutorials beschrieben gemacht zu haben und hab leider keine Ahnung wo der Fehler liegen könnte. Kann mir jemand einen Tipp geben?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Fr Okt 22, 2010 06:54 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
huhu,

versuch mal
Code:
gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);


gruß

Wölfchen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Fr Okt 22, 2010 14:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Solange dein Hintergrund nicht weiß ist, sollte es keine Probleme bezüglich des Blendmodus geben.

Allerdings sieht es für mich so aus, als wäre dein Quad mit der Rückseite zum Betrachter gerichtet. Check mal, ob du Backface Culling (GL_CULL_FACE) an hast und mach das testweise aus. Wenn das hilft: Die Reihenfolge der Vertices umdrehen.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Fr Okt 22, 2010 16:27 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Lord Horazont hat geschrieben:
Solange dein Hintergrund nicht weiß ist, sollte es keine Probleme bezüglich des Blendmodus geben.

Bevor ich die anderen beiden Vorschläge versuche (bin gerade nicht zu Hause): Was ist das Problem mit weißem Hintergrund? Bei mir ist der Hintergrund nämlich weiß.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Fr Okt 22, 2010 16:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Was ist das Problem mit weißem Hintergrund? Bei mir ist der Hintergrund nämlich weiß.

Durch gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE) addierst du das gerenderte auf den Hintergrund auf.
Um genau zu sein:
Code:
DeinQuad * SRC_ALPHA + Hintergrund * ONE
bzw.
(1.0,1.0,0.0) * 0.5 + (1.0,1.0,1.0) * 1.0

Wenn der Hintergrund schon weiß ist siehst du keine Veränderung, da die Grafikkarte nicht heller als weiß kann.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Fr Okt 22, 2010 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
glEnable(GL_COLOR_MATERIAL); fehlt wohl nur...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Sa Okt 23, 2010 20:16 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Das Problem war tatsächlich der weiße Hintergrund. Wenn ich die Hintergrundfarbe ändere funktioniert die Transparenz. Es gibt wohl keine Möglichkeit für Transparenz bei weißem Hintergrund, oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Sa Okt 23, 2010 20:30 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
ich hab auch weißen hintergrund, bei mir funzt das, was ich dir geschrieben hab.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Sa Okt 23, 2010 20:32 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Doch, die gibt es:
Wölfchen hat geschrieben:
Code:
  1. gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);

Bei weißem Hintergrund macht nur additives Blending (also wenn dfactor = GL_ONE) keinen Sinn. Denn wenn zu 1.0 noch etwas addiert wird, macht es die Grafikkarte wieder zu 1.0. Übrigens, hast du den Wiki-Artikel glBlendFunc gelesen?


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 21:05, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 17:08 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Hallo Leute

Ich habe jetzt wieder mal Zeit gehabt mir die Sache anzuschaun. Die Änderung von gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE); auf gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA); ändert leider nichts an meinem Problem. Der andere Vorschlag das Culling zu deaktivieren ändert auch nichts. Ich habe nun schon alles ausprobiert was ich irgendwie über Google finden konnste. Hat vielleicht noch jemand eine Vermutung woran es liegen könnte?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 17:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Siehst du ohne Blending etwas?
Wenn es nicht am Culling liegt könnte es ein nicht oder nicht richtig initialisierter Z-Buffer sein.
=> gl.glClear(gl.GL_DEPTH_BUFFER_BIT);

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 20:02 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Zitat:
Siehst du ohne Blending etwas?

Ja, ohne Blending ist alles da. Wenn ich das Blending aktiviere ist die Fläche unsichtbar (egal ob alpha = 0 oder 1).

Vielleicht sollte ich mal genauer erklären was ich eigentlich machen will:
Also, im Hintergrund ist alles weiß. Davor schwirren ein paar einzelne Objekte in beliebigen Farben herum. Nun möchte ich manchmal Text in der Mitte des Bildschirms einblenden. Wenn sich jetzt genau hinter diesem Text ein Objekt befindet ist der Text nicht gut lesbar, deshalb erzeuge ich hinter dem Text eine weiße Fläche. Das funktioniert auch wunderbar. Damit diese Fläche nicht ganz plötzlich auftaucht möchte ich sie zuerst mit 100% Transparenz zeichnen und dann langsam auf 0% Transparenz reduzieren. Soblad ich das Blending aktiviere ist die Fläche aber leider gar nicht mehr zu sehen. Anfangs dachte ich das Problem könnte vielleicht auch daran liegen, dass ich eine weiße Fläche über weißen Hintergrund habe, aber auch wenn ich die Fläche rot, gelb, oder was auch immer mache geht es nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 20:07 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das klingt nicht nach Blending sondern nach Alphatest.

Für Blending gibts nebenbei auch eine Fehlercheckliste: Checkliste Blending

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 20:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Hast du vielleicht irgendwo eine Material-Farbe mit Alpha = 0 gesetzt?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: JOGL: Frage zu Transparenz
BeitragVerfasst: Mi Nov 03, 2010 23:58 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Also wie bereits weiter oben geschrieben, wenn ich die Hintergrundfarbe ändere funktioniert es. Im Prinzip müsste also alles korrekt sein, es kann nur am weißen Hintergrund liegen. Nur bringt leider die Änderung von gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE) auf gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) nichts.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 16 Queries | GZIP : On ]