Läs på engelska

Dela via


Rastreringsregler (Direct3D 9)

Ofta matchar de punkter som anges för hörn inte exakt bildpunkterna på skärmen. När detta händer tillämpar Direct3D triangel rastreringsregler för att avgöra vilka pixlar som gäller för en viss triangel.

Rastreringsregler för triangel

Direct3D använder en fyllningskonvention överst till vänster för att fylla geometrin. Det här är samma konvention som används för rektanglar i GDI och OpenGL. I Direct3D är pixelns mittpunkt den avgörande punkten. Om mitten är inuti en triangel är pixeln en del av triangeln. Pixelcentra finns vid heltalskoordinater.

Den här beskrivningen av regler för triangel-rastrering som används av Direct3D gäller inte nödvändigtvis för all tillgänglig maskinvara. Testningen kan avslöja mindre variationer i implementeringen av dessa regler.

Följande bild visar en rektangel vars övre vänstra hörn är på (0, 0) och vars nedre högra hörn är på (5, 5). Den här rektangeln fyller 25 bildpunkter, precis som förväntat. Rektangelns bredd definieras som höger minus vänster. Höjden definieras som nederkant minus överkant.

bild av en numrerad kvadrat uppdelad i sex rader och kolumner

I den övre vänstra fyllningskonventionen refererar övre till den lodräta platsen för vågräta intervall, och vänstra refererar till den vågräta platsen för pixlar inom ett intervall. En kant kan inte vara en överkant om den inte är vågrät. I allmänhet har de flesta trianglar bara vänster- och högerkanter. Följande bild visar en övre kant och en högerkant.

bild av en numrerad fyrkant som innehåller två trianglar

Fyllningskonventionen överst till vänster avgör vilken åtgärd direct3D vidtar när en triangel passerar genom mitten av en pixel. Följande bild visar två trianglar, en vid (0, 0), (5, 0) och (5, 5), och den andra vid (0, 5), (0, 0) och (5, 5). Den första triangeln i det här fallet får 15 bildpunkter (visas i svart), medan den andra bara får 10 bildpunkter (visas i grått) eftersom den delade kanten är den första triangelns vänstra kant.

bild av en numrerad fyrkant som visar två trianglar

Om du definierar en rektangel med dess övre vänstra hörn på (0,5, 0,5) och dess nedre högra hörn vid (2.5, 4.5), är rektangelns mittpunkt (1.5, 2.5). När Direct3D-rasterizern tessellaterar den här rektangeln är mitten av varje pixel entydigt inuti var och en av de fyra trianglarna, och den övre vänstra fyllningskonventionen behövs inte. Följande bild visar detta. Bildpunkterna i rektangeln är märkta enligt triangeln där Direct3D innehåller dem.

Visar en numrerad fyrkant som innehåller en rektangel som är uppdelad i fyra trianglar.

Om du flyttar rektangeln i föregående bild så att dess övre vänstra hörn är (1.0, 1.0), dess nedre högra hörn vid (3.0, 5.0) och dess mittpunkt på (2.0, 3.0), tillämpar Direct3D fyllningskonventionen överst till vänster. De flesta bildpunkter i den här rektangeln sträcker sig över kantlinjen mellan två eller flera trianglar, som följande bild visar.

bild av en numrerad fyrkant som innehåller en rektangel som är uppdelad i fyra trianglar

För båda rektanglar påverkas samma bildpunkter, vilket visas i följande bild.

bildpunkter som påverkas av föregående två numrerade rutor

Punkt- och linjeregler

Punkter återges på samma sätt som punktsprit, som båda återges som skärmjusterade fyrsidiga objekt och därmed följer samma regler som polygonrendering.

Icke-antialiaserade linjerenderingsregler är exakt samma som för GDI-linjer.

Information om antialiaserad linjerendering finns i ID3DXLine.

Punkt sprite-regler

Punkt sprites och patch primitiver rasterized som om primitiverna först tessellated i trianglar och de resulterande trianglar rasterized. Mer information finns i Point Sprites (Direct3D 9).

koordinatsystem och geometri