Direct3D-Geräte (Direct3D 9)

Ein Direct3D-Gerät ist die Renderingkomponente von Direct3D. Er kapselt und speichert den Renderingzustand. Darüber hinaus führt ein Direct3D-Gerät Transformationen und Beleuchtungsvorgänge aus und rastert ein Bild auf eine Oberfläche.

In der Architektur enthalten Direct3D-Geräte ein Transformationsmodul, ein Beleuchtungsmodul und ein Rasterungsmodul, wie im folgenden Diagramm dargestellt.

Diagramm der Direct3d-Gerätearchitektur

Direct3D unterstützt derzeit zwei Standard Typen von Direct3D-Geräten:

  • Ein Hal-Gerät mit hardwarebeschleunigten Rasterung und Schattierung mit Hardware- und Softwarevertexverarbeitung
  • Ein Referenzgerät

Sie können sich diese Geräte als zwei separate Treiber vorstellen. Software- und Referenzgeräte werden durch Softwaretreiber dargestellt, und das Hal-Gerät wird durch einen Hardwaretreiber dargestellt. Die gebräuchlichste Möglichkeit, diese Geräte zu nutzen, besteht darin, das Hal-Gerät für den Versand von Anwendungen und das Referenzgerät für Featuretests zu verwenden. Diese werden von Drittanbietern bereitgestellt, um bestimmte Geräte zu emulieren, z. B. Entwicklungshardware, die noch nicht veröffentlicht wurde.

Das direct3D-Gerät, das von einer Anwendung erstellt wird, muss den Funktionen der Hardware entsprechen, auf der die Anwendung ausgeführt wird. Direct3D bietet Renderingfunktionen, entweder durch Zugriff auf 3D-Hardware, die auf dem Computer installiert ist, oder durch Emulieren der Funktionen von 3D-Hardware in Software. Daher stellt Direct3D Geräte sowohl für den Hardwarezugriff als auch für die Softwareemulation bereit.

Hardwarebeschleunigte Geräte bieten eine viel bessere Leistung als Softwaregeräte. Der Hal-Gerätetyp ist auf allen von Direct3D unterstützten Grafikkarten verfügbar. In den meisten Fällen richten sich Anwendungen auf Computer mit Hardwarebeschleunigung und Softwareemulation, um Computer mit niedrigerer End-Unterstützung aufzunehmen.

Mit Ausnahme des Referenzgeräts unterstützen Softwaregeräte nicht immer dieselben Funktionen wie ein Hardwaregerät. Anwendungen sollten immer Gerätefunktionen abfragen, um zu bestimmen, welche Features unterstützt werden.

Da das Verhalten der mit Direct3D 9 bereitgestellten Software- und Referenzgeräte mit dem verhalten des hal-Geräts identisch ist, funktioniert der Anwendungscode, der für die Arbeit mit dem HAL-Gerät erstellt wurde, ohne Änderungen mit der Software oder den Referenzgeräten. Beachten Sie, dass das bereitgestellte Software- oder Referenzgeräteverhalten zwar mit dem des hal-Geräts identisch ist, die Gerätefunktionen jedoch variieren und ein bestimmtes Softwaregerät möglicherweise einen viel kleineren Satz von Funktionen implementiert.

Verhalten

Mit Direct3D können Sie das Verhalten eines Geräts sowie den Gerätetyp angeben. Die IDirect3D9::CreateDevice-Methode ermöglicht eine Kombination aus mindestens einem der Verhaltensflags, um das globale Verhalten des Direct3D-Geräts zu steuern. Diese Verhaltensweisen geben an, was im Laufzeitteil von Direct3D verwaltet wird und was nicht, und die Gerätetypen geben an, welcher Treiber verwendet werden soll. Obwohl einige Kombinationen von Geräteverhalten nicht gültig sind, ist es möglich, alle Geräteverhalten mit allen Gerätetypen zu verwenden. Beispielsweise ist es gültig, D3DDEVTYPE_SW auf einem Gerät anzugeben, das mit D3DCREATE_PUREDEVICE erstellt wurde.

Erste Schritte