[OpenGL] Transparenz Darstellung

Ich habe in C++ ein kleines Programm geschrieben!(SDL/OpenGL)

Das Problem ist, dass ich durch die transparenten Flächen nur dahinterstehende Flächen sehe wenn diese, also die hinteren Flächen, zuerst gerendert wurden!

Deshalb frage ich gibt es einen Weg, dass man alle Flächen, die sich hinter der Transparenten Fläche befindet, sieht, egal wann im programm diese gerendert werden!

lg Markus
 
Du kannst das mit alpha testing machen, dann werden pixel nicht gerendert, wenn ihre Trasparenz zu gross ist. Was blenden anbelangt funktioniert dies jedoch nicht. Da musst du zwingend in umgekehrter Reihenfolge rendern, ist auch mathematisch logisch weil bei standard alpha blending gilt:
dst.rgb = src.a * src.rgb + (1.0 - src.a) * dst.rgb

Und wenn da halt in dst jetzt was steht was davor sein sollte wird das überblendet vom neuen.

Ergo:
Keine Möglichkeit. Entweder alles in umgekehrter Reihenfolge (von entfernt nach nah) oder von nah nach fern (mit speziellem Blending). Mischen geht nicht.
 
aber wie realisiere ich das von fern nach nah rendern?

wenn ich mich in der "Umgebung" bewegen möchte und dann hinter das objekt gehe! hab ich ja wieder das gleiche problem! oder nicht
 
Normalerweise hast du eine baumartige Struktur in die du alle Objekte einordnest. Dabei unterscheidest du zwischen transparenten und nicht transparenten Objekten. Die transparenten Objekte sortierst du nach Tiefe zur aktuellen Kamera. In jedem Frame zeichnest du dann zuerst alle nicht-transparenten Objekte und anschliessend die transparenten von hinten nach vorne. Bewegt sich die Kamera musst du die Tiefe neu berechnen.
 
Zurück