Introduzione alle regole di rasterizzazione
Spesso, i punti specificati per i vertici non corrispondono esattamente ai pixel sullo schermo. In questo caso, Direct3D applica regole di rasterizzazione dei triangoli per decidere quali pixel si applicano a un determinato triangolo.
Si tratta di un'introduzione semplificata alle regole di rasterizzazione. Per altre informazioni, vedere la pagina relativa alle Regole di rasterizzazione. Vedere anche la fase Rasterizer (RS).
Regole di rasterizzazione dei triangoli
Direct3D usa una convenzione di riempimento in alto a sinistra per riempire la geometria. Questa è la stessa convenzione usata per i rettangoli in GDI e OpenGL. In Direct3D il centro del pixel è il punto decisivo. Se il centro si trova all'interno di un triangolo, il pixel fa parte del triangolo. I centri pixel sono a coordinate intere.
Questa descrizione delle regole di rasterizzazione di triangoli usate da Direct3D non si applica necessariamente a tutti gli hardware disponibili. I test possono individuare variazioni minori nell'implementazione di queste regole.
La figura seguente mostra un rettangolo il cui angolo superiore sinistro si trova in corrispondenza di (0, 0) e il cui angolo inferiore destro si trova in corrispondenza di (5, 5). Questo rettangolo riempie 25 pixel, proprio come ci si aspetterebbe. La larghezza del rettangolo è definita come destra meno sinistra. L'altezza è definita come inferiore meno superiore.
Nella convenzione di riempimento in alto a sinistra, superiore fa riferimento alla posizione verticale degli intervalli orizzontali e sinistra fa riferimento alla posizione orizzontale dei pixel all'interno di un intervallo. Un bordo non può essere superiore a meno che non sia orizzontale. In generale, la maggior parte dei triangoli ha solo bordi sinistro e destro. La figura seguente mostra un bordo superiore e un bordo destro.
La convenzione di riempimento in alto a sinistra determina l'azione eseguita da Direct3D quando un triangolo passa attraverso il centro di un pixel. La figura seguente mostra due triangoli, uno in (0, 0), (5, 0) e (5, 5) e l'altro in (0, 5), (0, 0) e (5, 5). Il primo triangolo in questo caso ottiene 15 pixel (mostrato in nero), mentre il secondo ottiene solo 10 pixel (mostrato in grigio) perché il bordo condiviso è quello sinistro del primo triangolo.
Se si definisce un rettangolo con l'angolo superiore sinistro in corrispondenza di (0,5, 0,5) e l'angolo inferiore destro (2,5, 4,5), il punto centrale di questo rettangolo è in corrispondenza di (1,5, 2,5). Quando il rasterizzatore Direct3D tassella questo rettangolo, il centro di ogni pixel non è ambiguo all'interno di ognuno dei quattro triangoli e la convenzione di riempimento superiore sinistro non è necessaria. Nella figura seguente viene illustrato questo. I pixel nel rettangolo vengono etichettati in base al triangolo in cui Direct3D li include.
Se si sposta il rettangolo nell'illustrazione precedente in modo che l'angolo superiore sinistro si trovi in corrispondenza (1.0, 1.0), l'angolo inferiore destro di (3.0, 5.0) e il relativo punto centrale in corrispondenza (2.0, 3.0), Direct3D applica la convenzione di riempimento in alto a sinistra. La maggior parte dei pixel in questo rettangolo si allontana dal bordo tra due o più triangoli, come illustrato nella figura seguente.
Per entrambi i rettangoli, gli stessi pixel sono interessati, come illustrato nella figura seguente.
Regole basate su linee e punti
Viene eseguito il rendering dei punti come gli sprite, che vengono sottoposti a rendering come quadrilateri allineati allo schermo e quindi rispettano le stesse regole del rendering dei poligoni.
Le regole di rendering delle linee non antialiased sono identiche a quelle per le linee GDI.
Regole sprite di punto
Gli sprite dei punti e le primitive patch vengono rasterizzati come se le primitive fossero prima a mosaico in triangoli e i triangoli risultanti rasterizzati.
Argomenti correlati