ZFighting: Unterschied zwischen den Versionen
Aus DGL Wiki
(Rechtschreibung, bessere Formulierung, Strukturierung) |
|||
Zeile 1: | Zeile 1: | ||
== Ursache == | == 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 == | == 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 == | == Lösung == | ||
− | + | ||
− | + | Z-Fighting kann durch verschieden Techniken verhindert werden: | |
− | + | <ul><li>Die Tiefenfunktion ändern ( [[glDepthFunc]](GL_LEQUAL) ).</li> | |
− | + | <li>Genauigkeit des Tiefenbuffers erhöhen (z.B. 24 oder 32 Bit statt 16 Bit, wobei moderne Karten meist maximal 24 unterstützen).</li> | |
− | + | <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> | |
− | + | <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
Inhaltsverzeichnis
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 ).