Alphablending problem in OpenGL



  • Hi Luete,

    ich bin sicherlich nicht der Einzige der dieses Problem hat, und sicherlich nicht nur in OpenGL.
    Ihr kennt das doch sicherlich dass man, wenn man ein Objekt halbtransparent anzeigt, das dahinterstehende Objekt nicht sieht weil dieses nach dem transparenten gezeichnet wird. Dieser Alphablending-'Effekt' passiert auch inerhalb eines Objektes selbst wenn man Dreiecke, die als letztes gezeichnet werden, nicht sieht weil ein halbtransparentes davor ist. Bei Objekten an sich könnte man diese ja noch (abhängig von der Tiefe des Raums) sortieren aber bei den Dreiecken inerhalb eines Objektes wird das schon sehr viel schwiriger.
    Ich hoffe ihr versteht was ich meine oder habt dieses Problem selbst schon erlebt.
    Kennt jemand von euch eine gute Lösung für dieses Problem?



  • Du kannst zuerst die komplett undurchsichtigen Teile deines Meshs zeichnen und danach die durchsichtigen und dabei das Schreiben in den Z-Buffer (depth write) deaktivieren.

    Es ist ja meistens so, dass nicht nur bestimmte Dreiecke einfach mal transparent sind, sondern eben ganze Teile des Meshs wie ein Kristallschwert oder sowas cooles 😉
    Wie schon gesagt, einfach die durchsichtigen Teile zum Schluss zeichnen, depth write dabei deaktivieren und eventuell backface culling aktivieren bzw deaktivieren je nach Belieben.


  • Mod

    LukasBanana schrieb:

    Hi Luete,

    ich bin sicherlich nicht der Einzige der dieses Problem hat,

    deswege hast du ja auch die loesung mittels suche gefunden wie z.b.

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-135233-and-highlight-is-alphablend.html
    und
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-117689-and-highlight-is-alphablend.html

    mfg



  • Also das mit dem Objekt-sortieren hab ich immerhin schon bei den 'Linesen' Effekten hinbekommen.
    Aber wenn man Alphablending richtig verwenden will ist das richtig kniflig, selbst "FarCry" hat da noch teilweise Probleme mit gehabt.
    Allerdings was ist wenn in einem Mesh das komplett halbtransparent ist zwei oder mehrere Dreiecke überlappen? Ratet mal wie das aussieht 🙄

    Und noch was, wo wir schon bei Alphablending sind: Wenn ich in meinen Programmen in OpenGL das Licht aktiviere ist meine bunte Welt nicht mehr bunt. Genauer gesagt alle Dreiecke in der Welt werden mit einer Farbe RGBA von (255, 255, 255, 255) bzw. (1.0f, 1.0f, 1.0f, 1.0f) angezeigt. Keine bunte Farbe mehr und auch keine halbtransparentz mehr wie z.B. (255, 64, 0, 128). Weiß jemand wie ich das auch MIT Licht nutzen kann? 😕



  • Hat das Problem denn keiner? Dass bei Licht keine Farben mehr zu sehen sind?


  • Mod

    LukasBanana schrieb:

    Hat das Problem denn keiner? Dass bei Licht keine Farben mehr zu sehen sind?

    Da du nicht der erste bist der sich fragt "Ob noch jemand das problem hatte?", haben wir nun etwas echt nuetzliches. Dieses spezielle feature haette dir jede frage die du hier im thread stellstest und tage lang auf antwort wartetest sofort beantwortet.

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-177515
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-103156
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-86845


Anmelden zum Antworten