Verarbeiten von Scheitelpunktdaten (Direct3D 9)

Die IDirect3DDevice9-Schnittstelle unterstützt die Vertexverarbeitung in Software und Hardware. Im Allgemeinen sind die Gerätefunktionen für die Software- und Hardwarevertexverarbeitung nicht identisch. Die Hardwarefunktionen sind je nach Grafikkarte und Treiber variabel, während softwarebasierte Funktionen behoben werden.

Die folgenden Flags steuern das Vertexverarbeitungsverhalten für die Hardware abstraction Layer (HAL) und Referenzgeräte.

  • D3DCREATE_SOFTWARE_VERTEXPROCESSING
  • D3DCREATE_HARDWARE_VERTEXPROCESSING
  • D3DCREATE_MIXED_VERTEXPROCESSING

Geben Sie beim Aufrufen von IDirect3D9::CreateDevice eines der Vertexverarbeitungsverhaltensflags an. Das Flag im gemischten Modus ermöglicht es dem Gerät, sowohl die Software- als auch die Hardwarevertexverarbeitung durchzuführen. Für ein Gerät kann jeweils nur ein Scheitelpunktverarbeitungsflag festgelegt werden. Beachten Sie, dass das D3DCREATE_HARDWARE_VERTEXPROCESSING-Flag beim Erstellen eines reinen Geräts (D3DCREATE_PUREDEVICE) festgelegt werden muss.

Um duale Vertexverarbeitungsfunktionen auf einem einzelnen Gerät zu vermeiden, können zur Laufzeit nur die Hardwarevertexverarbeitungsfunktionen abgefragt werden. Softwarevertexverarbeitungsfunktionen sind behoben und können nicht zur Laufzeit abgefragt werden.

Das VertexProcessingCaps-Element der D3DCAPS9-Struktur bestimmt die Hardwarevertexverarbeitungsfunktionen des Geräts.

Für die Softwarevertexverarbeitung werden die folgenden Funktionen unterstützt.

Darüber hinaus sind in der folgenden Tabelle die Werte aufgeführt, die für Elemente der D3DCAPS9-Struktur für ein Gerät im Softwarevertexverarbeitungsmodus festgelegt sind.

Member Softwarevertexverarbeitungsfunktionen
MaxActiveLights Unbegrenzt
MaxUserClipPlanes 6
MaxVertexBlendMatrices 4
MaxStreams 16
MaxVertexIndex 0xFFFFFFFF

 

Im Allgemeinen sollte jede Anwendung, die vertexverarbeitungsgebunden ist, ein HAL-Gerät verwenden. Die Softwarevertexverarbeitung bietet eine garantierte Reihe von Vertexverarbeitungsfunktionen, einschließlich einer unbegrenzten Anzahl von Leuchten und vollständiger Unterstützung für programmierbare Vertex-Shader. Sie können jederzeit zwischen Software- und Hardwarevertexverarbeitung umschalten, wenn Sie das HAL-Gerät verwenden (dies ist der einzige Gerätetyp, der sowohl die Hardware- als auch die Softwarevertexverarbeitung unterstützt). Die einzige Voraussetzung ist, dass Vertexpuffer, die für die Softwarevertexverarbeitung verwendet werden, im Systemspeicher zugeordnet werden müssen.

Direct3D-Geräte