Sdílet prostřednictvím


Úvod do pravidel rasterizace

Body zadané pro vrcholy se často neshodují přesně s pixely na obrazovce. Když k tomu dojde, Direct3D použije pravidla rastrování trojúhelníku k rozhodnutí, které pixely se vztahují na daný trojúhelník.

Toto je zjednodušený úvod do pravidel rasterizace. Další podrobnosti najdete v tématu Pravidla rasterizace. Viz také fáze rasterizátoru (RS) .

Pravidla rasterizace trojúhelníku

Direct3D používá konvenci vyplňování zprava doleva a shora dolů pro vyplňování geometrie. Jedná se o stejnou konvenci, která se používá pro obdélníky v GDI a OpenGL. V Direct3D je středem pixelu rozhodující bod. Pokud je střed uvnitř trojúhelníku, pixel je součástí trojúhelníku. Středy pixelů jsou v celočíselné souřadnici.

Tento popis pravidel trojúhelníkové rasterizace, která používá Direct3D, nemusí nutně platit pro veškerý dostupný hardware. Testování může odhalit menší odchylky v implementaci těchto pravidel.

Následující obrázek znázorňuje obdélník, jehož levý horní roh je v (0, 0) a jehož pravý dolní roh je v (5, 5). Tento obdélník vyplní 25 pixelů, stejně jako byste očekávali. Šířka obdélníku je definována jako pravá mínus vlevo. Výška je definována jako spodní minus horní.

číslovaný čtverec rozdělený na šest řádků a sloupců

V konvenci vyplňování v levém horním rohu horní určuje svislé umístění vodorovných úseků a vlevo určuje vodorovné umístění pixelů v úseku. Okraj nemůže být horní okraj, pokud není vodorovný. Obecně platí, že většina trojúhelníků má pouze levý a pravý okraj. Následující obrázek znázorňuje horní okraj a pravý okraj.

číslovaný čtverec, který obsahuje dva trojúhelníky

Konvence vyplňování vlevo nahoře určuje akci, kterou Direct3D provede, když trojúhelník prochází středem pixelu. Následující obrázek znázorňuje dva trojúhelníky, jeden v (0, 0), (5, 0) a (5, 5) a druhý na (0, 5), (0, 0) a (5, 5). První trojúhelník v tomto případě získá 15 pixelů (zobrazený černobílý), zatímco druhý získá pouze 10 pixelů (zobrazený šedě), protože sdílený okraj je levý okraj prvního trojúhelníku.

číslovaný čtverec, který zobrazuje dva trojúhelníky

Pokud definujete obdélník s jeho levým horním rohem (0,5, 0,5) a jeho pravém dolním rohem (2,5, 4,5), je středový bod tohoto obdélníku (1,5, 2,5). Když rasterizér Direct3D teseluje tento obdélník, střed každého pixelu je jednoznačně uvnitř každého ze čtyř trojúhelníků a není potřeba konvence vyplňování vlevo nahoře. Na následujícím obrázku je vidět toto. Pixely v obdélníku jsou označeny podle trojúhelníku, ve kterém je Direct3D obsahuje.

Snímek obrazovky s číslovaným čtvercem, který obsahuje obdélník rozdělený na čtyři trojúhelníky

Pokud obdélník přesunete na předchozím obrázku tak, že jeho levý horní roh bude v bodě (1.0, 1.0), jeho pravý dolní roh v bodě (3.0, 5.0) a jeho středový bod na (2.0, 3.0), Direct3D použije konvenci vyplňování z levého-horního rohu. Většina pixelů v tomto obdélníku stíhá ohraničení mezi dvěma nebo více trojúhelníky, jak ukazuje následující obrázek.

Snímek obrazovky s číslovaným čtverečkem, který je přesunutý dolů a vpravo

U obou obdélníků jsou ovlivněny stejné pixely, jak je znázorněno na následujícím obrázku.

pixely, které byly ovlivněny předchozími dvěma číslovanými čtverci

Pravidla bodu a čáry

Body se vykreslují stejně jako bodové sprity, které se vykreslují jako čtyřúhelníky zarovnané na obrazovce, a proto dodržují stejná pravidla jako mnohoúhelníkové vykreslování.

Pravidla vykreslování řádků, která nejsou antialiased, jsou přesně stejná jako pravidla pro řádky GDI.

pravidla bodového spritu

Bodové sprites a patch primitiva jsou rasterizované, jako by primitiva byla nejprve tesselovaná do trojúhelníků a výsledné trojúhelníky rasterizované.

Zařízení

fáze rasterizátoru (RS)

Pravidla rasterizace