Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Detta är en förenklad introduktion till rastreringsregler. Mer information finns i Rastreringsregler. Se även Rasterizer (RS) steg.
Rastreringsregler för triangeln
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 är placerade 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.
              
              
            
I den översta vänstra fyllnadskonventionen refererar översta till det lodräta läget för horisontella sträckor, och vänstra refererar till det horisontella läget för pixlar inom en sträcka. 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.
              
              
            
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.
              
              
            
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.
              
              
            
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.
              
              
            
För båda rektanglar påverkas samma bildpunkter, vilket visas i följande bild.
              
              
            
Punkt- och linjeregler
Punkter återges på samma sätt som punktsprites, vilka båda återges som fyrsidiga objekt justerade mot skärmen och därmed följer samma regler som polygonrendering.
Icke-antialiaserade linjerenderingsregler är exakt samma som för GDI-linjer.
Point Sprite-regler
Punkt-sprites och patchprimitiver renderas som om primitiverna först delades upp i trianglar och de resulterande trianglarna renderades.
Relevanta ämnen