Geräte

Ein Direct3D-Gerät ist die Renderingkomponente von Direct3D. Ein Gerät kapselt und speichert den Renderstatus, führt Transformationen und Beleuchtungsvorgänge aus und rastert ein Bild auf einer 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 zwei Standard Typen von Direct3D-Geräten:

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

Diese Geräte sind zwei separate Treiber. 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. Das bereitgestellte Software- oder Referenzgeräteverhalten ist mit dem des hal-Geräts identisch, aber die Gerätefunktionen variieren, und ein bestimmtes Softwaregerät kann einen viel kleineren Satz von Funktionen implementieren.

In diesem Abschnitt

Thema BESCHREIBUNG

Device types (Gerätetypen)

Direct3D-Gerätetypen umfassen Hal-Geräte (Hardware Abstraction Layer) und den Verweisraster.

Vergleich von Vollbild- und Fenstermodus

Direct3D-Anwendungen können in einem der beiden Modi ausgeführt werden: Fenster oder Vollbildmodus. Im Fenstermodus teilt die Anwendung den verfügbaren Desktopbildschirm für alle ausgeführten Anwendungen. Im Vollbildmodus deckt das Fenster, in dem die Anwendung ausgeführt wird, den gesamten Desktop ab und blendet alle ausgeführten Anwendungen (einschließlich Ihrer Entwicklungsumgebung) aus.

Verloren gegangene Geräte

Ein Direct3D-Gerät kann sich entweder im Betriebszustand oder im Zustand "Verloren" befinden. Der Betriebszustand ist der normale Zustand des Geräts, in dem das Gerät ausgeführt wird und das gesamte Rendering wie erwartet dargestellt wird. Das Gerät wechselt in den verlorenen Zustand, wenn ein Ereignis, z. B. der Verlust des Tastaturfokus in einer Vollbildanwendung, das Rendern unmöglich macht.

Swapchains

Eine Swapchain ist eine Sammlung von Puffern, die zum Anzeigen von Frames für den Benutzer verwendet werden. Jedes Mal, wenn eine Anwendung einen neuen Frame zur Anzeige vorstellt, tritt der erste Puffer in der Swapchain an die Stelle des angezeigten Puffers. Dieser Vorgang wird als Austauschen oder Kippen bezeichnet.

Einführung in die Regeln für die Rasterung

Häufig stimmen die für Scheitelpunkte angegebenen Punkte nicht genau mit den Pixeln auf dem Bildschirm überein. In diesem Fall wendet Direct3D Dreieckrasterregeln an, um zu entscheiden, welche Pixel für ein bestimmtes Dreieck gelten.

 

Lernhandbuch für Direct3D-Grafiken