Entwickler-Ecke
Multimedia / Grafik - OpenGL - GL_BLEND
Aya - Fr 18.10.02 21:12
Titel: OpenGL - GL_BLEND
Hi,
hab mal ne frage zu dem GL_BLEND...
wenn ich das enable wird ALLES transparent, aber ich hätte es gern so das nur bestimmte objekte Transparent werden... wenn ich bei der Color angabe den Alpha Wert auf 1.0 setzt hilt's auchnix... :(
UND, wenn ich GL_BLEND habe, muß ich ja GL_DEPTH_TEST deaktivieren... gibt es nicht irgendne möglichkeit einfach nur ein einziges objekt transparent werden zu lassen???
Au'revoir,
Aya
Aya - Fr 18.10.02 21:20
Mhh..
hab jetzt versucht alles mit dem Depth_Test zu zeichnen, und am ende erst Blend zu aktivieren und dann das Object mit der Transparenz zu zeichnen...
geht auch soweit, nur (!) das Transparente objekt ist jetzt IMMER sichtbar... also man sieht es auch durch wände hindurch (kein DepthTest halt...)
kann mir da jemand helfen??
Andreas Pfau - Sa 19.10.02 21:00
Tja, eigentlich fällt mir da nur eins ein: alles mit Gl_Blend zeichnen, dabei Alpha auf undurchsichtig setzen, dann dein Transparenz-Objekt mit irgend einem andern Alpha-Wert rendern.
Noch was: verwendest du überhaupt die Funktion glBlendFunc? Spiel mal ein bisschen mit den Werten rum, ich glaube (Gl_Dst_Alpha, Gl_One_Minus_Dst_Alpha) müsste gehen. Wichtig: deine undurchischtigen Objekte müsse auch mit Alpha = Undursichtig gerendert werden!!!
Ausprobieren hilft immer :D
Aya - So 20.10.02 16:33
ja, aber dann geht ja Depth_Test nichmehr... und dadurch sieht man dann die hälfte der Objekte nemmer :)
Andreas Pfau - So 20.10.02 17:18
Sorry... ausporbieren hilft immer... hätt' ich auch vorher tun sollen...
Aber hast du schon probiert, permanent Depth-Testing und Blending zu aktivieiren? Könnte klappen...
Außerdem gibt es da so eine Funktion, glDepthFunc. Ich kenne mich damit zwar nicht aus, aber villeicht ist das der schlüssel zum Erfolg...
Aya - Fr 25.10.02 20:59
Hi,
was ist denn permanent Depth-Testing und Blending??
oder meinst du einfach das GL_DEPTH_TEST und GL_BLEND dauernd aktiviert sind?? das geht nämlich net :)
Wenn du was anderes meintest, erklär mal bitte
Au'revoir,
Aya
Andreas Pfau - Fr 25.10.02 21:54
Hi Aya,
ich muss sagen, das Problem hat mich ganz schön beschäftigt. Sogar so arg, dass ich mich 2 Stunden vor den PC gesetzt und nach einer Lösung gesucht habe. Jetzt funktioniert es, 100%!
1) Vergess alles, was ich bisher gesagt habe, das war nur Spekulation :oops:
2) So gehts (hab ich ausprobiert:
- Alle undurchsichtigen Objekte rendern (mit Depth_Test)
- glDepthMask(False); aufrufen
- Alle durchsichtigen Objekte rendern (auch mit Depth_Test)
- glDepthMask(True); aufrufen (rückgängig machen)
- Fertig!!!!!!!!!!!
Erklärung:
Zuert alles undurchsichtige rendern, klar. Dann verhinderst du mittels glDepthMask, dass neue Z-Werte gebuffert werden. D.h., es wird nur dann gezeichnet, wenn es von keinen undurchsichtigen Objekten überdeckt wird, durchsichtige sind egal (die sollen ja geblendet werden)... kann ich so schlecht erklären... mach die mal Gedanken darüber... auf jeden Fall funzt's!
:D AP
Aya - Fr 25.10.02 22:09
huhu, danke werd's nachher mal versuchen :)
PS: Schreib mir mal ne Mail (Aya@animes.de) oder per ICQ (36235116)... muß dich mal was fragen (Keine angst, nix wo ich hilfe brauch oder so *g*)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!