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.
- das D3DVTXPCAPS_DIRECTIONALLIGHTS Member von D3DVTXPCAPS
- das D3DVTXPCAPS_LOCALVIEWER Mitglied von D3DVTXPCAPS
- das D3DVTXPCAPS_MATERIALSOURCE7 Mitglied von D3DVTXPCAPS
- das D3DVTXPCAPS_POSITIONALLIGHTS Mitglied von D3DVTXPCAPS
- das D3DVTXPCAPS_TEXGEN Mitglied von D3DVTXPCAPS
- das D3DVTXPCAPS_TWEENING Mitglied von D3DVTXPCAPS
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.
Zugehörige Themen