Condividi tramite


Decaling (Direct3D 9)

Le applicazioni Direct3D usano il decaling per controllare quali pixel di una particolare immagine primitiva vengono disegnati nella superficie di destinazione del rendering. Le applicazioni applicano decals alle immagini delle primitive per consentire il rendering corretto dei poligoni coplanari.

Ad esempio, quando si applicano segni di pneumatico e linee gialle a una strada, i contrassegni dovrebbero apparire direttamente sulla parte superiore della strada. Tuttavia, i valori z dei contrassegni e della strada sono gli stessi. Pertanto, il buffer di profondità potrebbe non produrre una separazione pulita tra i due. È possibile eseguire il rendering di alcuni pixel nella primitiva posteriore sopra la primitiva anteriore e viceversa. L'immagine risultante sembra scemare da frame a frame. Questo effetto è chiamato z-fighting o flimmering.

Per risolvere questo problema, usare uno stencil per mascherare la sezione della primitiva posteriore in cui verrà visualizzata la decal. Disattivare il buffer z ed eseguire il rendering dell'immagine della primitiva anteriore nell'area mascherata della superficie di destinazione di rendering.

Anche se è possibile usare la fusione di più trame per risolvere questo problema, in questo modo limita il numero di altri effetti speciali che l'applicazione può produrre. L'uso del buffer degli stencil per applicare le decals libera le fasi di fusione delle trame per altri effetti.

Tecniche di buffer stencil