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?
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 network • my 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
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ß.
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?
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.
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?
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);
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.
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.
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.