Rasterungsregeln (Direct3D 9)

Häufig stimmen die für Scheitelpunkte angegebenen Punkte nicht genau mit den Pixeln auf dem Bildschirm überein. In diesem Fall wendet Direct3D Dreieckrasterregeln an, um zu entscheiden, welche Pixel für ein bestimmtes Dreieck gelten.

Dreiecksrasterregeln

Direct3D verwendet eine Füllkonvention von oben links für die Befüllgeometrie. Dies ist die gleiche Konvention, die für Rechtecke in GDI und OpenGL verwendet wird. In Direct3D ist die Mitte des Pixels der entscheidende Punkt. Wenn sich die Mitte innerhalb eines Dreiecks befindet, ist das Pixel Teil des Dreiecks. Pixelzentren befinden sich bei ganzzahligen Koordinaten.

Diese Beschreibung der von Direct3D verwendeten Dreiecksrasterregeln gilt nicht unbedingt für alle verfügbare Hardware. Ihre Tests können geringfügige Abweichungen bei der Implementierung dieser Regeln aufdecken.

Die folgende Abbildung zeigt ein Rechteck, dessen obere linke Ecke bei (0, 0) und dessen untere rechte Ecke bei (5, 5) liegt. Dieses Rechteck füllt erwartungsgemäß 25 Pixel aus. Die Breite des Rechtecks wird als rechts minus links definiert. Die Höhe ist als unten minus oben definiert.

Abbildung eines nummerierten Quadrats, das in sechs Zeilen und Spalten unterteilt ist

In der Füllkonvention oben links bezieht sich oben auf die vertikale Position horizontaler Spannen und links auf die horizontale Position von Pixeln innerhalb einer Spanne. Ein Rand kann kein oberer Rand sein, es sei denn, er ist horizontal. Im Allgemeinen haben die meisten Dreiecke nur linke und rechte Ränder. Die folgende Abbildung zeigt einen oberen und einen rechten Rand.

Abbildung eines nummerierten Quadrats, das zwei Dreiecke enthält

Die Füllkonvention oben links bestimmt die Aktion von Direct3D, wenn ein Dreieck die Mitte eines Pixels durchläuft. Die folgende Abbildung zeigt zwei Dreiecke, eines bei (0, 0), (5, 0) und (5, 5) und das andere bei (0, 5), (0, 0) und (5, 5). Das erste Dreieck erhält in diesem Fall 15 Pixel (schwarz dargestellt), während das zweite nur 10 Pixel (grau dargestellt) erhält, da der freigegebene Rand der linke Rand des ersten Dreiecks ist.

Abbildung eines nummerierten Quadrats mit zwei Dreiecken

Wenn Sie ein Rechteck mit der linken oberen Ecke (0,5, 0,5) und der unteren rechten Ecke bei (2,5, 4,5) definieren, befindet sich der Mittelpunkt dieses Rechtecks bei (1,5, 2,5). Wenn der Direct3D-Rasterizer dieses Rechteck tesseliert, befindet sich der Mittelpunkt jedes Pixels eindeutig in jedem der vier Dreiecke, und die Füllkonvention oben links ist nicht erforderlich. Dies ist in der folgenden Abbildung dargestellt. Die Pixel im Rechteck werden entsprechend dem Dreieck beschriftet, in dem Direct3D sie enthält.

Zeigt ein nummeriertes Quadrat, das ein Rechteck enthält, das in vier Dreiecke unterteilt ist.

Wenn Sie das Rechteck in der obigen Abbildung so verschieben, dass seine obere linke Ecke bei (1,0, 1,0), die untere rechte Ecke (3.0, 5.0) und der Mittelpunkt bei (2.0, 3.0) liegt, wendet Direct3D die Füllkonvention oben links an. Die meisten Pixel in diesem Rechteck streuen den Rahmen zwischen zwei oder mehr Dreiecken, wie in der folgenden Abbildung gezeigt.

Abbildung eines nummerierten Quadrats, das ein Rechteck enthält, das in vier Dreiecke unterteilt ist

Für beide Rechtecke sind dieselben Pixel betroffen, wie in der folgenden Abbildung dargestellt.

Abbildung von Pixeln, die von den vorherigen beiden nummerierten Quadraten betroffen sind

Punkt- und Linienregeln

Punkte werden wie Punktspite gerendert, die beide als bildschirmbündige Quadrilaterale gerendert werden und somit den gleichen Regeln wie polygonales Rendern entsprechen.

Nicht antialiasierte Zeilenrenderingregeln sind genau die gleichen wie für GDI-Zeilen.

Informationen zum Rendern von Antialiased-Linien finden Sie unter ID3DXLine.

Point-Sprite-Regeln

Punktspite und Patchgrundtypen werden so gerastert, als ob die Grundtypen zuerst in Dreiecke tesselliert und die resultierenden Dreiecke gerastert wurden. Weitere Informationen finden Sie unter Point Sprites (Direct3D 9).

Koordinatensysteme und Geometrie