Share via


Texturmischung (Direct3D 9)

Direct3D kann in einem einzigen Durchgang bis zu acht Texturen mit Primitiven kombinieren. Die Verwendung mehrerer Texturmischungen kann die Bildrate einer Direct3D-Anwendung erheblich erhöhen. Eine Anwendung verwendet mehrere Texturmischungen, um Texturen, Schatten, spiegelförmige Beleuchtung, diffuse Beleuchtung und andere Spezialeffekte in einem einzigen Durchgang anzuwenden.

Um Texturmischungen zu verwenden, sollte Ihre Anwendung zuerst überprüfen, ob die Hardware des Benutzers dies unterstützt. Diese Informationen finden Sie im TextureCaps-Member der D3DCAPS9-Struktur . Ausführliche Informationen zum Abfragen der Benutzerhardware für Texture Blending-Funktionen finden Sie unter IDirect3DDevice9::GetDeviceCaps.

Texturphasen und die Texturmischungskaskade

Direct3D unterstützt single-pass Multiple Texture Blending durch die Verwendung von Texturstufen. Eine Texturphase übernimmt zwei Argumente und führt einen Füllvorgang für diese aus, wobei das Ergebnis für die weitere Verarbeitung oder für die Rasterung übergeben wird. Sie können eine Texturphase wie im folgenden Diagramm dargestellt visualisieren.

Diagramm einer Texturphase

Wie das obige Diagramm zeigt, mischen Texturphasen zwei Argumente mithilfe eines angegebenen Operators. Zu den gängigen Vorgängen gehören einfache Modulation oder Hinzufügen der Farb- oder Alphakomponenten der Argumente, aber mehr als zwei Dutzend Vorgänge werden unterstützt. Die Argumente für eine Phase können eine zugeordnete Textur, die iterierte Farbe oder alpha (während der Gouraud-Schattierung iteriert), beliebige Farbe und Alpha oder das Ergebnis aus der vorherigen Texturphase sein. Weitere Informationen finden Sie unter Texture Blending Operations and Arguments (Direct3D 9).

Hinweis

Direct3D unterscheidet Farbmischungen von Alpha-Blending. Anwendungen legen Füllvorgänge und Argumente für Farbe und Alpha einzeln fest, und die Ergebnisse dieser Einstellungen sind unabhängig voneinander.

 

Die Kombination von Argumenten und Vorgängen, die von mehreren Mischphasen verwendet werden, definiert eine einfache flussbasierte Mischsprache. Die Ergebnisse von einer Phase fließen in eine andere Phase, von dieser Phase zur nächsten usw. Das Konzept der Ergebnisse, die von Phase zu Phase fließen, um schließlich auf einem Polygon gerastert zu werden, wird häufig als Texturmischungskaskade bezeichnet. Das folgende Diagramm zeigt, wie einzelne Texturphasen die Texturmischungskaskade bilden.

Diagramm der Texturphasen in der Texturmischungskaskade

Jede Stufe in einem Gerät verfügt über einen nullbasierten Index. Direct3D ermöglicht bis zu acht Mischphasen, obwohl Sie immer die Gerätefunktionen überprüfen sollten, um zu bestimmen, wie viele Stufen die aktuelle Hardware unterstützt. Die erste Mischphase befindet sich bei Index 0, die zweite bei 1 usw. bis Index 7. Das System mischt Phasen in erhöhter Indexreihenfolge.

Verwenden Sie nur die Anzahl von Phasen, die Sie benötigen. Die nicht verwendeten Mischphasen sind standardmäßig deaktiviert. Wenn Ihre Anwendung also nur die ersten beiden Phasen verwendet, müssen nur Vorgänge und Argumente für Die Phase 0 und 1 festgelegt werden. Das System kombiniert die beiden Phasen und ignoriert die deaktivierten Phasen.

Hinweis

Wenn Ihre Anwendung die Anzahl der Phasen variiert, die sie für verschiedene Situationen verwendet , z. B. vier Phasen für einige Objekte und nur zwei für andere, müssen Sie nicht alle zuvor verwendeten Phasen explizit deaktivieren. Eine Option besteht darin, den Farbvorgang für die erste nicht verwendete Phase zu deaktivieren, dann werden alle Phasen mit einem höheren Index nicht angewendet. Eine weitere Option besteht darin, die Texturzuordnung vollständig zu deaktivieren, indem Sie den Farbvorgang für die erste Texturphase (Stufe 0) auf D3DTOP_DISABLE festlegen. Eine dritte Option ist, wenn eine Texturphase D3DTSS_COLORARG1 gleich D3DTA_TEXTURE hat und der Texturzeiger für die Phase NULL ist, diese Phase und alle Phasen, nachdem sie nicht verarbeitet wurden.

 

Weitere Informationen finden Sie in den folgenden Themen.

Direct3D-Texturen