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.
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.
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.
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.
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.
Per entrambi i rettangoli, gli stessi pixel sono interessati, come illustrato nella figura seguente.
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).
Argomenti correlati