Freigeben über


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 Dreiecksrasterungsregeln an, um zu entscheiden, welche Pixel auf ein bestimmtes Dreieck angewendet werden.

Regeln für die Dreieckrasterung

Direct3D verwendet eine Oben-links-Füllkonvention für die Füllungsgeometrie. 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. Pixelzentriert sind ganzzahlige Koordinaten.

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

Die folgende Abbildung zeigt ein Rechteck, dessen obere linke Ecke (0, 0) und dessen untere rechte Ecke (5, 5) liegt. Dieses Rechteck füllt 25 Pixel, genau wie erwartet. Die Breite des Rechtecks wird als rechts minus links definiert. Die Höhe wird als untere Minuskante definiert.

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

In der Oben-links-Füllkonvention bezieht sich obere auf die vertikale Position horizontaler Spannen, und links bezieht sich auf die horizontale Position von Pixeln innerhalb eines Bereichs. Ein Rand kann nur dann ein oberer Rand sein, wenn er nicht horizontal ist. Im Allgemeinen haben die meisten Dreiecke nur linke und rechte Ränder. Die folgende Abbildung zeigt einen oberen Rand und einen rechten Rand.

Abbildung eines nummerierten Quadrats, das zwei Dreiecke

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

Abbildung eines nummerierten Quadrats, das zwei Dreiecke

Wenn Sie ein Rechteck mit seiner oberen linken Ecke bei (0,5, 0,5) und seiner 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 die Mitte jedes Pixels eindeutig in jedem der vier Dreiecke, und die oben links Füllkonvention ist nicht erforderlich. Die folgende Abbildung zeigt dies. Die Pixel im Rechteck werden entsprechend dem Dreieck bezeichnet, in dem Direct3D sie enthält.

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

Wenn Sie das Rechteck in der vorherigen Abbildung so verschieben, dass sich die obere linke Ecke (1,0, 1,0) befindet, wird die untere rechte Ecke bei (3,0, 5,0) und der Mittelpunkt an (2,0, 3,0) angewendet, direct3D wendet die Oben-links-Füllungskonvention an. Die meisten Pixel in diesem Rechteck streuen den Rahmen zwischen zwei oder mehr Dreiecken, wie die folgende Abbildung zeigt.

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

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

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

Punkt- und Linienregeln

Punkte werden genauso gerendert wie Punktspites, die beide als Bildschirmausrichtung quadrilaterale gerendert werden und somit dieselben Regeln wie Polygonrendering einhalten.

Nicht antialiasierte Zeilenrenderingregeln sind genau mit denen für GDI-Linienidentisch.

Informationen zum Rendern antialiasierter Linien finden Sie unter ID3DXLine-.

Point Sprite-Regeln

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

Koordinatensysteme und Geometrie-