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

Aktuelle Zeit: Fr Jul 18, 2025 12:34

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Nov 18, 2008 12:02 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Hallo,

was sind die Auswirkungen wenn während dem zeinchen mehrfach glotho aufgerufen wird und dabei unterschiedliche znear zfar werte spezifiziert werden.

Also was ich vorhabe - alles in einem Vorgang nacheinander:


1. Zeichen der normalen Geometrie mit znear und zfar in glOrtho gesetzt auf die Werte (die Mittelpunkt +/- Halbe Raumdiagonale) => Gutes Zeinchen kein Z-Fighting
2. Zeichen einiger weniger Elemente (z.B. des Koortinatensystemes, was evtl. sehr weit weg ist - Angenommen die Teile liegen bei 10000,10000,10000 und sind nur 100x100x100 groß)
Das mache ich indem ich znear und zfar in einem 2. Aufruf von glOrtho auf +1E20 und -1E20 setzte. (funktioniert auch gut)
3. Weiteres Zeichen wie unter 1 mit nochmaligen Aufruf von glOrtho mit den znear und zfar wie unter 1. beschrieben. (funktioniert das?)

Was passiert nun mit dem Depth buffer?
Mache ich den mit 2. schon kaputt und kriege beim Zeinchen unter 3. ein Z-fightig, weil die Depth buffer Werte im Eimer sind?

Grüße
User69


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 15:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das Problem dürfte sein, dass die Werte, die in den z-Buffer geschrieben werden, sich sozusagen an deinem zNear und zFar orientieren. Wenn du das also änderst, ändert sich auch die Bedeutung der bereits bestehenden Werte. Daher kommts da wohl zu interessanten zwischenfällen. Du solltest also auf ein ändern von zNear/zFar verzichten, wenn du den Tiefenpuffer nicht killst.

Eine sinnvolle verwendung wäre zum beispiel, wenn du deine Szene entlang der View-Z-Achse (also der Blickrichtung) in mehrere Teile aufteilst und dann von hinten nach vorne renderst. Dann kannst du die einzelnen Teile mit unterschiedlichem zNear und zFar rendern, musst aber zwischendrin den Tiefenpuffer abschießen, mit glClear(GL_DEPTH_BUFFER_BIT);.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 16:04 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Was passiert denn mit den Werten im Depth puffer? Werden die verändert, wenn ich neue zNear und zFar seetze oder werden nur nachfolgede Werte mit anderem Mapping in der Depthpuffer geschrieben?

Wenn ich unter 2. mit hohen zNear, zFar ohne DepthTest zeichne, also die Werte garnicht in den Puffer wandern, bekomme ich dann die unter 1. bereits erzeugte Depthwerte mit exakt der selben Bedeutung wieder, wenn ich die Werte nach hohen zNear und zFar (und zeichnen mit disabled Depthtest) wieder auf die Ursprungswerte von davor setze?

User69


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Verändert werden die Werte nicht. Aber die neuen Werte werden, wie du schon richtig erkannt hast, mit einem anderen Mapping geschrieben und somit auch beim Tiefentest verglichen. Das Vergleichen bekommst du mit glDisable(GL_DEPTH_TEST) ohne weiteres aus. Um auch das schreiben in den Tiefenpuffer zu verhindern, musst du glDepthMask(False) - fürs ausschalten - und später wieder glDepthMask(true) - fürs einschalten - aufrufen. Aber du musst dann halt bedenken, dass der Kram, den du mit dem extremen zNear/zFar renderst, keinen Tiefentest erhält, da also nur die Zeichenreihenfolge ausschlag gibt, ob gezeichnet wird oder nicht.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 16:44 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Perfekt,
damit kann ich leben.

Der Tipp mit glDepthMask(False) war noch gut. (hätt ich vielleicht vergessen)
User69


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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 ]