ZFighting: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Rechtschreibung, bessere Formulierung, Strukturierung)
Zeile 1: Zeile 1:
 
== Ursache ==
 
== Ursache ==
ZFighting nennt man den Effekt, der auftritt wenn zwei Polygone genau auf der gleichen Stelle positioniet wurden, und/oder wenn der [[Tiefenpuffer]] nicht hoch genug auflöst.
+
 
 +
Z-Fighting nennt man den Effekt, der auftritt wenn zwei Polygone genau auf der gleichen Stelle positioniert wurden, und/oder wenn der [[Tiefenpuffer]] nicht hoch genug auflöst.
  
 
== Beschreibung ==
 
== Beschreibung ==
ZFighting erkennt man am flimmern der sich überdeckenden Polygone/Linien bei Bewegungen der Szene. Dabei kommt es mitunder auch zur partiellen Sichtbarkeite beider Polygone.
+
 
 +
Z-Fighting erkennt man am Flimmern der sich überdeckenden Polygone/Linien bei Bewegungen der Szene. Dabei kommt es mitunter auch zur partiellen Sichtbarkeit beider Polygone.
  
 
== Lösung ==
 
== Lösung ==
ZFighting kann durch verschieden Techniken verhindert werden: <br>
+
 
1. Die Tiefenfunktion ändern ( [[glDepthFunc]](GL_LEQUAL) )<br>
+
Z-Fighting kann durch verschieden Techniken verhindert werden:  
2. Genauigkeit des Tiefenbuffers erhöhen (zb. 32 bit statt 16 bit)<br>
+
<ul><li>Die Tiefenfunktion ändern ( [[glDepthFunc]](GL_LEQUAL) ).</li>
3. Die Werte der near/far clipping plane verändern (siehe auch den link am ende des Artikels)<br>
+
<li>Genauigkeit des Tiefenbuffers erhöhen (z.B. 24 oder 32 Bit statt 16 Bit, wobei moderne Karten meist maximal 24 unterstützen).</li>
4. Keine zwei Polygone an der selben Stelle zeichenen lassen<br>
+
<li>Die Near-Clipping-Plane soweit hinaus schieben wie möglich und die Far-Clipping-Plane so nahe wie möglich halten. (Damit der Z-Puffer besser aufgeteilt wird)</li>
5. "Polygon Offset" verwenden ( [[glPolygonOffset]] )<br>
+
<li>Keine zwei Polygone an der selben Stelle rendern lassen.</li>
 +
<li>"Polygon Offset" verwenden ( [[glPolygonOffset]] ).</li>
 +
</ul>
  
 
== weitere Infos im Web ==
 
== weitere Infos im Web ==
  
 
[http://www.sjbaker.org/steve/omniv/love_your_z_buffer.html Ein interresanter Artikel über Z-Buffer]
 
[http://www.sjbaker.org/steve/omniv/love_your_z_buffer.html Ein interresanter Artikel über Z-Buffer]

Version vom 7. Juli 2004, 22:55 Uhr

Ursache

Z-Fighting nennt man den Effekt, der auftritt wenn zwei Polygone genau auf der gleichen Stelle positioniert wurden, und/oder wenn der Tiefenpuffer nicht hoch genug auflöst.

Beschreibung

Z-Fighting erkennt man am Flimmern der sich überdeckenden Polygone/Linien bei Bewegungen der Szene. Dabei kommt es mitunter auch zur partiellen Sichtbarkeit beider Polygone.

Lösung

Z-Fighting kann durch verschieden Techniken verhindert werden:

  • Die Tiefenfunktion ändern ( glDepthFunc(GL_LEQUAL) ).
  • Genauigkeit des Tiefenbuffers erhöhen (z.B. 24 oder 32 Bit statt 16 Bit, wobei moderne Karten meist maximal 24 unterstützen).
  • Die Near-Clipping-Plane soweit hinaus schieben wie möglich und die Far-Clipping-Plane so nahe wie möglich halten. (Damit der Z-Puffer besser aufgeteilt wird)
  • Keine zwei Polygone an der selben Stelle rendern lassen.
  • "Polygon Offset" verwenden ( glPolygonOffset ).

weitere Infos im Web

Ein interresanter Artikel über Z-Buffer