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

Aktuelle Zeit: Sa Jul 05, 2025 04:05

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



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 12, 2003 19:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
du kannst zB mal hier schauen:
<a href='http://www.phobeus.de/hosting/dgl/forum/index.php?act=ST&f=2&t=1189' target='_blank'>http://www.phobeus.de/hosting/dgl/forum/in...t=ST&f=2&t=1189</a>
Ansonsten versuchs mal mit Blending:
Code:
  1.  
  2.  &nbsp; glEnable(GL_BLEND);
  3.  &nbsp; &nbsp; &nbsp;glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); &nbsp;//brauchbare Funktion, hab ich immer für Wasser genommen
  4.  &nbsp; &nbsp; &nbsp;glColor4f(1.0f,1.0f,1.0f,0.5f); //statt 0.5 ein beliebiger Wert zwischen 0 und 1 für Transparenz, kann amn auch anderswo unterbringen
  5.  &nbsp; &nbsp; &nbsp;//zeichne Fenster
  6.  &nbsp; glDisable(GL_BLEND);
  7.  &nbsp;

Les dir aber im verlinkten thread die Sache mit dem Depthtesting durch, weil wenn der ganz normal an ist wird hinter dem Fenster nichts mehr gezeichnet, auch wenn man durchschauen kann.

MfG
Mindwalker

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 08:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das Zauberwort heisst in deinem Falle Alphatesting (oder Alphamasking), eine Technik bei der man OpenGL über den Alphakanal einer Textur bestimmte bereiche als komplett transparent mitteilen kann.
Vorteil dieser Methode ist die Tatsache, das du mit Alphatesting transparent gemachte Objekte nicht wie beim Blending aufwendig sortieren musst, sondern diese wie ganz normale Flächen von OpenGL sortiert werden und die Transparenz unabhänging von der Tiefensortierung der Flächen immer funktioniert.

Wies funktioniert erzähl ich allerdings nicht.Zum einen gibts dazu auf meiner HP (siehe SIG) ein ausführliches Tut, und ausserdem sollte dir wenn das nicht reicht, die Suchfunktion des Forums weiterhelfen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 08:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Bei echten Löchern ist Alphamasking aus den eben genannten Gründen auf jeden Fall zu bevorzugen (wirkt sich auch eher positiv auf die Fillrate aus, da der Alphatest noch vor dem Z-Test ausgeführt wird, beim Blending wird die Fillrate runtergeschraubt UND man muss die Polygone (oder Objekte) tiefensortieren).

Da du im konkreten Fall aber "Scheiben" einsetzen möchtest, wirst du doch bei Blending bleiben müssen. Am besten schaut übrigens eine Textur mit Alphakanal aus - dann kannst du sogar Unregelmäßigkeiten und Schmutzflecken darstellen (du kannst sogar eine Textur NUR in den Alphakanal legen und ansonsten die Fensterfarbe frei definieren).

Wenn du nicht tiefensortieren kannst/willst, kannst du auch Polygonstippling mit entsprechendem Punktmuster verwenden, was sich vor allem bei sehr alten Grafikkarten positiv auf die Fillrate auswirkt (bei NVidia Karten z.B. aber eine Textureinheit verbrät).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 15:42 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Auf jeden Fall nicht Variants ;D Kick die Unit raus, wird automatisch hinzugefügt. Man vergißt gerne die raus zu nehmen ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 16:01 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ja, ich komme von da oben *nick* B)

Schau dich mal auf der Webseite von Mike Lischke um (links) da wirste fündig. Ansonsten ... schreib mich mal an (und log dich vor allem ein *g*). Bin gegen 18.30 zu Hause und schicke Dir da sonst mal was.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
Eure Fenster möchte ich mal sehen, dass ihr hier guten Gewissens von Alpha Masking sprechen könnt :D

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 16:29 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Jo
1) mir ne mail schicken ;D
2) In den \delphi\lib oder einen anderen ordner, der in den Suchpfaden ist kopieren.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Zusätzliche Units kannst du einfach im LIB Verzeichnis deiner Delphi-Installation ablegen - dort werden sie automatisch gefunden. Alternativ (und meines Erachtens sauberer) kannst du dir auch ein oder mehrere eigene Bibliotheksverzeichnisse erstellen, und in den Projekteigenschaften deiner jeweiligen Programme drauf verweisen - wenn du zusätzliche Bibliotheken nicht mit deinem anderen Source ablegen willst.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich wollte nurmal kurz anmerken das es mit dem AlphaKanal der Textur auch durchaus möglich ist eine fläche nur 50% oder 73% oder was auch immer transparent zu machen :)

Meine TexturUnit (die ja von niemandem hier akzeptiert wurde..) kann das z.B. ohne probleme.

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 18:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
ich wollte nurmal kurz anmerken das es mit dem AlphaKanal der Textur auch durchaus möglich ist eine fläche nur 50% oder 73% oder was auch immer transparent zu machen :)

Negativ...im Alphakanal kannst du zwar verschiedene Werte zwischen 0 und 1 ablegen, allerdings geben diese NICHT die Transparenz der Alphamaske an, sondern den Vergleichswert den man mittels glAlphaFunc (zweiter Parameter) angeben kann...wenn man Teiltransparenz nämlich über Alphamasking realisieren könnten (und so ohne die Soriterungsprobleme), dann würde ja keiner mehr Blending nutzen...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 13, 2003 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ist vielleicht etwas verwirrend, dass sowohl Alphatest als auch Blending über den Alphakanal funktionieren. Da beim Alphatest die Pixel aber nicht mit dem Hintergrund verknüpft werden, kann dieser viel früher stattfinden.
Ganz lustig wird's dann, wenn man auch noch den Alphakanal in einem RGBA Pixelformat verwendet, damit lassen sich dann ähnliche Effekte wie mit dem Stencilbuffer realisieren, die aber auch auf älteren Grafikkarten noch relativ flott sind.
Oftmals missverstanden wird auch, dass für Alphamasking und Alphablending Effekte ein RGB Format (ohne Alpha) völlig ausreicht, da hierfür nur der übergebene Alphawert in der Farbe oder Textur benötigt wird. Mit der Existenz eines hardwarebeschleunigten Stencilbuffers (der viel flexibler ist) fällt mir eigentlich so ad hoc auch gar keine gescheite Anwendung des Alphakanals der Bildschirmpixel mehr ein (vielleicht hat ja jemand eine gute Idee ...)

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 13 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]