Texturmischung (Direct3D 9)
Direct3D kann in einem einzelnen Durchgang bis zu acht Texturen zu Primitiven mischen. Die Verwendung mehrerer Texturmischungen kann die Framerate einer Direct3D-Anwendung deutlich erhöhen. Eine Anwendung verwendet mehrere Texturmischungen, um Texturen, Schatten, lichtförmige Beleuchtung, diffuse Beleuchtung und andere Sondereffekte in einem einzelnen Durchgang anzuwenden.
Um Texturblending zu verwenden, sollte Ihre Anwendung zunächst überprüfen, ob die Hardware des Benutzers dies unterstützt. Diese Informationen finden Sie im TextureCaps-Member der D3DCAPS9-Struktur. Weitere Informationen zum Abfragen der Hardware des Benutzers nach Texturmischungsfunktionen finden Sie unter IDirect3DDevice9::GetDeviceCaps.
Texturstufen und die Texturmischungskaskade
Direct3D unterstützt das Mischen mehrerer Texturen mit einfachem Durchgang durch Die Verwendung von Texturstufen. Eine Texturphase nimmt zwei Argumente an und führt einen Überblendungsvorgang für sie aus, indem das Ergebnis zur weiteren Verarbeitung oder zur Rasterung übergeben wird. Sie können eine Texturphase visualisieren, wie im folgenden Diagramm dargestellt.

Wie das obige Diagramm zeigt, mischen Texturstufen zwei Argumente mithilfe eines angegebenen Operators. Zu den gängigen Vorgängen gehören einfaches An- oder Addition der Farb- oder Alphakomponenten der Argumente, aber mehr als zwei Dutzend Vorgänge werden unterstützt. Die Argumente für eine Stufe können eine zugeordnete Textur, die iterierte Farbe oder das Alpha (während der Gouraud-Schattierung iteriert), beliebige Farbe und Alpha oder das Ergebnis der vorherigen Texturphase sein. Weitere Informationen finden Sie unter Texture Blending Operations and Arguments (Direct3D 9) (Texturmischungsvorgänge und -argumente (Direct3D 9)).
Hinweis
Direct3D unterscheidet Farbblending von Alphablending. Anwendungen legen Blendingvorgänge und Argumente für Farbe und Alpha einzeln fest, und die Ergebnisse dieser Einstellungen sind voneinander unabhängig.
Die Kombination aus Argumenten und Vorgängen, die von mehreren Überblendungsphasen verwendet wird, definiert eine einfache flussbasierte Mischungssprache. Die Ergebnisse aus einer Phase fließen in eine andere Phase, von dieser Phase zur nächsten und so weiter. Das Konzept der Ergebnisse, die von Phase zu Stufe fließen, um schließlich auf einem Polygon rastert zu werden, wird häufig als Texturmischungskaskade bezeichnet. Das folgende Diagramm zeigt, wie einzelne Texturstufen die Texturmischung kaskadieren.

Jede Phase eines Geräts verfügt über einen nullbasierten Index. Direct3D lässt bis zu acht Überblendungsphasen zu. Sie sollten jedoch immer die Gerätefunktionen überprüfen, um zu bestimmen, wie viele Stufen die aktuelle Hardware unterstützt. Die erste Mischungsphase befindet sich bei Index 0, die zweite bei 1, und so weiter, bis index 7. Das System kombiniert Phasen in zunehmender Index reihenfolge.
Verwenden Sie nur die Anzahl der benötigten Phasen. Die nicht verwendeten Überblendungsphasen sind standardmäßig deaktiviert. Wenn Ihre Anwendung also nur die ersten beiden Phasen verwendet, müssen nur Vorgänge und Argumente für Phase 0 und 1 festgelegt werden. Das System kombiniert die beiden Phasen und ignoriert die deaktivierten Phasen.
Hinweis
Wenn Ihre Anwendung die Anzahl von 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 Möglichkeit besteht in der Deaktivierung des Farbvorgang für die erste nicht verwendete Phase. Dann werden nicht alle Phasen mit einem höheren Index angewendet. Eine weitere Möglichkeit besteht in der vollständigen Deaktivierung der Texturzuordnung, indem sie den Farbvorgang für die erste Texturphase (Phase 0) auf D3DTOP _ DISABLE festlegen. Eine dritte Option ist, wenn für eine Texturphase D3DTSS _ COLORARG1 gleich D3DTA TEXTURE ist und der Texturzeiger für die Stufe NULL ist, diese Phase und alle Phasen, nachdem sie nicht verarbeitet _ wurden.
Weitere Informationen finden Sie in den folgenden Themen.
- Texturmischungsvorgänge und -argumente (Direct3D 9)
- Zuweisen der aktuellen Texturen (Direct3D 9)
- Erstellen von Blendingstufen (Direct3D 9)
- Alphatexturblending (Direct3D 9)
- MultipassTexturblending (Direct3D 9)
- Light Mapping with Textures (Direct3D 9) (Lichtzuordnung mit Texturen (Direct3D 9))