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

Aktuelle Zeit: Fr Jul 04, 2025 22:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: OpenGL & Feuer
BeitragVerfasst: Di Jan 07, 2003 19:16 
Ich habe eine Flamme auf schwarzem Hintergrund erzeugt
Code:
  1.  
  2.  
  3.   //zeichenrutine
  4.  
  5.   glEnable(GL_BLEND);
  6.  
  7.   glDisable(GL_DEPTH_Test);
  8.  
  9.   glBlendFunc(GL_SRC_ALPHA, GL_ONE);
  10.  
  11.  
  12.  
  13.   //BEGIN_NEU!!!
  14.  
  15.   FEffect.Advance(round(1000/Speed));
  16.  
  17.  
  18.  
  19.   //Render-Particles
  20.  
  21.   glLoadIdentity;
  22.  
  23.   glTranslate(x,y,z);
  24.  
  25.  
  26.  
  27.   FEffect.Render;
  28.  
  29.   //END_NEU!!!
  30.  
  31.  

Und habe eine Qudratische Textur geladen und gezeichnet. Wenn ich nun die Textur in die Tiefe verschiebe, kommt das Feuer nicht hervor ich kann noch soweit in die Tiefe gehen wie ich will. Aber wenn ich die Zeile
Code:
  1.  
  2.  
  3. glDisable(GL_DEPTH_Test);
  4.  
  5.  

auslasse stimmt das mit der Tiefe, nur die Flamme hat schwarze Streifen. Was habe ich falsch gemacht ???


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 02:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 20:27
Beiträge: 479
Wohnort: Bremen
nur bei soliden partikeln kommst du mit angeschaltetem dephttest weiter.

kommt blending ins spiel wird es komplizierter. für einfaches blending (licht) reicht es erst den soliden teil der szene mit eingeschaltetem tiefen-puffer zu rendern. dann schaltest du das schreiben in den puffer aus und renderst die partikel.
bei komplexen effekten kann es notwendig sein die partikel in der tiefe nach zu rendern (bei transparen z.b.) dann kommst du um ein manuelles sortieren nicht herum.

-lith

_________________
Selber Denken macht klug!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 12:40 
Ich habe leider nicht verstanden wie du das jetzt meinst, könntest du es mir bitte noch mal erklären anhand eines Beispieles?
Meine Sourcen mit einem Pic
<a href='http://hometown.aol.de/DelphiPic/pic001.jpg' target='_blank'>http://hometown.aol.de/DelphiPic/pic001.jpg</a>
Die rechte Flamme ist ok nur das mit der tiefe funktioniert nicht!!


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 13:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nachdem ich mir das zweite Bild mal angesehen hab, würde ich spontan sagen, das deine Flamme entweder (tiefentechnich) hinter oder "auf" deiner Wand liegt, und deshalb nicht gezeichnet wird, (wegen glDepthFunc(GL_LESS).
Probiers mal mit glDepthFunc(GL_LEQUAL) oder zeichne die Flamme minimal vor deiner Mauer (in der Tiefe gesehen), also etwa so : glTranslatef(0,0.01,0).
Das hat dann aber ggü. glDepthFunc(GL_LEQUAL) den Nachteil, das es aufgrund der *geringen* Z-Puffergenauigkeit (24Bit bei den meisten Grakas) in weiteren Entfernungen immernoch zu Darstellungsfehlern kommen kann.

zu glDepthFunc()
Im Normalfall lässt OpenGL ein Fragment nur passieren, wenn dessen Z-Tiefe niedriger ist als die des Fragmentes auf dem selben Platz (GL_LESS).
Wenn du nun deine Mauer zeichnest, und dann deine Flamme auf der selben Tiefe, dann werden die Fragmente deiner Flamme, die auf der selben Tiefe liegen wie die Fragmente der Mauer nicht durchgelassen.Ergo siehst du also keine Flamme an dieser Stelle!
GL_LEQUAL funktioniert fast wie GL_LESS, mit dem Unterschied das auch später gezeichnete Fragmente durchgelassen werden, die auf der selben Tiefe an der selben Stelle wie ein vorher gerendertes Fragment liegen!

Bessere Alternative, deine Flamme auf die Wand zu zeichnen :
Du könntest dein Flammenpartikelsystem in eine Textur rendern, und diese dann mit aktiviertem Blending unter Benutzung von Multitexturing auf deine Mauer legen...dann hast du keine Probleme mehr mit dem Tiefenpuffer oder deinen schwarzen Rechtecken um deine Feuerpartikel (die wohl daher rühren, das du die Mauer erst nach der Flamme zeichnest, und da Blending per Pixel arbeitet, wird auf schwarz geblendet, da ja von deiner Mauer noch nix im Farbpuffer ist!)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 13:25 
Zitat:
Nachdem ich mir das zweite Bild mal angesehen hab, würde ich spontan sagen, das deine Flamme entweder (tiefentechnich) hinter oder "auf" deiner Wand liegt, und deshalb nicht gezeichnet wird, (wegen glDepthFunc(GL_LESS).
Probiers mal mit glDepthFunc(GL_LEQUAL)...

Ich habe in meinen Sourcen keine Procedure die glDepthFunc() heist. Deswegen weis ich nicht was du mir damit sagen willst. Die Tiefe verändere ich nicht das anzeige was ich änder ist das ich eine Zeile ausklammer
Code:
  1. glDisable(GL_DEPTH_Test);
und dann bekomme ich die beiden Bilder.


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 13:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Ich habe in meinen Sourcen keine Procedure die glDepthFunc() heist. Deswegen weis ich nicht was du mir damit sagen willst. Die Tiefe verändere ich nicht das anzeige was ich änder ist das ich eine Zeile ausklammer
Code:
  1. glDisable(GL_DEPTH_Test);
und dann bekomme ich die beiden Bilder.


Das du die glDepthFunc() nicht in deinem Quelltext hast, spielt keine Rolle...mit dieser Funktion setzt man den Tiefentest fest, und der wird von OpenGL standardmäßig auf GL_LESS gesetzt.
Was ich dir sagen wollte war, das du mit glDepthFunc(GL_LEQUAL) deinen Tiefentest verändern sollst, und es damit nochmal probieren sollst!

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 14:39 
Habe es gemacht aber hat nichts gebracht!


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 14:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann lad den Quellcode deines Programms (mit allen benötigten) Units mal hier auf den DGL-FTP, damit ich mir den Rest des Programmes auch ansehen kann.
Der Teil den du gepostet hast ist wohl nicht aussagekräftig genug.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:26 
Zitat:
Dann lad den Quellcode deines Programms (mit allen benötigten) Units mal hier auf den DGL-FTP, damit ich mir den Rest des Programmes auch ansehen kann.
Der Teil den du gepostet hast ist wohl nicht aussagekräftig genug.

Auf dem DGL-FTP können da nur mitglieder drauf zugreifen?


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nein.Der ist öffentlich und jeder kann dort Files <300k ablegen.
Hier der Direktlink : <a href='http://www.phobeus.de/hosting/dgl/main.php?page=upload' target='_blank'>http://www.phobeus.de/hosting/dgl/main.php?page=upload</a>

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:34 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Nein, darauf haben momentan alle Leute zugriff ;)
<a href='http://www.phobeus.de/hosting/dgl/main.php?page=upload' target='_blank'>http://www.phobeus.de/hosting/dgl/main.php?page=upload</a>
davon abgesehen tut die Registration auch nicht weh :wink:

Phobeus

_________________
"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: Mi Jan 08, 2003 15:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Schau mal unter <a href='http://www.delphigl.com/' target='_blank'>http://www.delphigl.com/</a> unter Filez ganz unten oder<a href='http://www.phobeus.de/hosting/dgl/main.php?page=upload' target='_blank'> hier</a>.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Wow! 3 Posts mit dem gleichen Inhalt in nur >1 Minute ! :wink:
Und ich war wieder der Langsamste... *hngh* ... :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:40 
ok habe es auf dem Server geladen


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 15:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
@Phob: Das hat jetzt nix gebracht. Die Länderdomain sollte schon im Link stehen... und wenn man die hinzufügt, existiert das File nicht. Vielleicht sollte man Features auch mal testen bevor man es einfach so laufen lässt. :wink:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.013s | 16 Queries | GZIP : On ]