Dekalierung (Direct3D 9)
Direct3D-Anwendungen verwenden die Dekalierung, um zu steuern, welche Pixel von einem bestimmten primitiven Bild auf die Renderingzieloberfläche gezeichnet werden. Anwendungen wenden Abschärfungen auf die Bilder von Primitiven an, damit koplanare Polygone ordnungsgemäß gerendert werden können.
Wenn Sie z. B. Reifenmarkierungen und gelbe Linien auf eine Straße anwenden, sollten die Markierungen direkt über der Straße angezeigt werden. Die z-Werte der Markierungen und der Straße sind jedoch identisch. Daher erzeugt der Tiefenpuffer möglicherweise keine saubere Trennung zwischen den beiden. Einige Pixel im primitiven Hintergrundtyp werden möglicherweise über dem primitiven Anfang und umgekehrt gerendert. Das resultierende Bild scheint von Frame zu Frame zu schrumpfen. Dieser Effekt wird als Z-Fighting oder Flimmering bezeichnet.
Um dieses Problem zu beheben, verwenden Sie eine Schablone, um den Abschnitt des Hintergrundprimitiven zu maskieren, in dem die Decal angezeigt wird. Deaktivieren Sie die Z-Pufferung, und rendern Sie das Bild des primitiven Front-Primitivs im maskierten Bereich der Renderzieloberfläche.
Obwohl mehrere Texturmischungen verwendet werden können, um dieses Problem zu lösen, schränkt dies die Anzahl anderer Sondereffekte ein, die Ihre Anwendung erzeugen kann. Durch die Verwendung des Schablonenpuffers zum Anwenden von Decals werden Texturmischungsphasen für andere Effekte frei.