Regole di rasterizzazione (Direct3D 9)

Spesso, i punti specificati per i vertici non corrispondono esattamente ai pixel sullo schermo. In questo caso, Direct3D applica regole di rasterizzazione del triangolo per decidere quali pixel si applicano a un determinato triangolo.

Regole di rasterizzazione triangolo

Direct3D usa una convenzione di riempimento in alto a sinistra per la geometria di riempimento. Si tratta della 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 triangolo 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 è a (0, 0) e il cui angolo inferiore destro è a (5, 5). Questo rettangolo riempie 25 pixel, proprio come ci si aspetta. La larghezza del rettangolo è definita come destra meno sinistra. L'altezza è definita come inferiore meno superiore.

illustrazione di un quadrato numerato diviso in sei righe e colonne

Nella convenzione di riempimento in alto a sinistra, la parte superiore fa riferimento alla posizione verticale di intervalli orizzontali e sinistra fa riferimento alla posizione orizzontale dei pixel all'interno di un intervallo. Un bordo non può essere un bordo 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.

illustrazione di un quadrato numerato che contiene due triangoli

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 a (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 è il bordo sinistro del primo triangolo.

illustrazione di un quadrato numerato che mostra due triangoli

Se si definisce un rettangolo con l'angolo superiore sinistro (0,5, 0,5) e il relativo angolo inferiore destro (2,5, 4,5), il punto centrale di questo rettangolo è a (1,5, 2,5). Quando il rasterizzatore Direct3D tessella questo rettangolo, il centro di ogni pixel non è ambiguo all'interno di ognuno dei quattro triangoli e la convenzione di riempimento superiore sinistra non è necessaria. Nella figura seguente viene illustrato questo. I pixel nel rettangolo vengono etichettati in base al triangolo in cui Direct3D li include.

Mostra un quadrato numerato che contiene un rettangolo diviso in quattro triangoli.

Se si sposta il rettangolo nella figura precedente in modo che l'angolo superiore sinistro sia a (1.0, 1.0), l'angolo inferiore destro in corrispondenza (3.0, 5.0) e il relativo punto centrale a (2.0, 3.0), Direct3D applica la convenzione di riempimento in alto a sinistra. La maggior parte dei pixel in questo rettangolo straddle il bordo tra due o più triangoli, come illustrato nella figura seguente.

illustrazione di un quadrato numerato che contiene un rettangolo diviso in quattro triangoli

Per entrambi i rettangoli, gli stessi pixel sono interessati, come illustrato nella figura seguente.

illustrazione dei pixel interessati dai due quadrati numerati precedenti

Regole punto e riga

I punti vengono visualizzati come sprite a punti, che vengono sottoposti a rendering come quadrilateri allineati allo schermo e quindi rispettano le stesse regole del rendering poligono.

Le regole di rendering delle linee non antialiased sono esattamente uguali a quelle per le linee GDI.

Per informazioni sul rendering di linee antialiased, vedere ID3DXLine.

Regole sprite punto

Gli sprite a punti e le primitive patch vengono rasterizzati come se le primitive siano state prima tessellate in triangoli e i triangoli risultanti rasterizzati. Per altre informazioni, vedere Point Sprites (Direct3D 9).

Sistemi di coordinate e geometria