Indiziertes Vertexblending (Direct3D 9)
Das indizierte Vertexblending erweitert die Vertexmischungsunterstützung in Direct3D, damit Matrizen für das Mischen verwendet werden können. Auf diese Matrizen wird mithilfe eines Matrixindex verwiesen. Diese Indizes werden pro Scheitelpunkt bereitgestellt und verweisen auf eine Palette von bis zu 256 Matrizen. Jeder Index ist 8 Bits, und jeder Scheitelpunkt kann bis zu vier Indizes haben, wodurch vier Matrizen pro Scheitelpunkt kombiniert werden können. Die Indizes werden in ein DWORD gepackt. Da Indizes pro Scheitelpunkt angegeben werden, können bis zu 12 Matrizen ein einzelnes Dreieck beeinflussen, und jede Matrix in der Palette kann sich auf die Scheitelpunkte eines Zeichnen-Aufrufs auswirken. Dieser Ansatz hat die folgenden Vorteile.
- Sie ermöglicht es mehr Matrizen, sich auf ein einzelnes Dreieck zu auswirken.
- Es ermöglicht, dass mehr gemischte Dreiecke im gleichen Zeichnen-Aufruf übergeben werden.
- Dadurch wird vertex blending unabhängig von Dreiecksindizes. Dadurch können progressive Gitter in Verbindung mit Scheitelpunktblending verwendet werden.
Ein Nachteil dieses Ansatzes ist, dass er nicht mit primitiven Kurvenoberflächen funktioniert, wenn das Mosaik vor der Scheitelpunktverarbeitung erfolgt.
Das folgende Diagramm zeigt, wie sich vier Matrizen auf einen Scheitelpunkt auswirken können. Jeder Scheitelpunkt verfügt über bis zu vier Indizes, sodass vier Matrizen pro Scheitelpunkt kombiniert werden können. Im Diagramm werden die Matrizen verwendet, die bei 0, 2, 5 und 6 indiziert sind.

Das folgende Diagramm zeigt, wie sich bis zu 12 Matrizen auf ein Dreieck auswirken können. Bei Verwendung von Indizes, die pro Scheitelpunkt angegeben werden, können bis zu 12 Matrizen das Dreieck beeinflussen.

Die folgende Gleichung bestimmt den allgemeinen Fall für die Auswirkung von Matrizen auf einen Scheitelpunkt.

Das V-Modell ist die Vertexposition des Eingabemodellbereichs. Index0.. Index3 sind die Matrixindizes pro Scheitelpunkt, die in ein DWORD gepackt sind. M [ ] ist das Array von Weltmatrizen, in die indiziert wird. b₀.. b₂ sind die Mischungsgewichtungen. VWorld ist die Scheitelpunktposition des Ausgaberaums.
Weitere Informationen zum Mischen indizierter Scheitelpunkte finden Sie unter Using Indexed Vertex Blending (Direct3D 9) (Verwenden von Indiziertes Vertexblending (Direct3D 9)).