ZFighting

Aus DGL Wiki
Version vom 7. Juli 2004, 22:55 Uhr von Sascha Willems (Diskussion | Beiträge) (Rechtschreibung, bessere Formulierung, Strukturierung)

Wechseln zu: Navigation, Suche

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