Freigeben über


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.

Architekturell enthalten Direct3D-Geräte ein Transformationsmodul, ein Beleuchtungsmodul und ein Rasterungsmodul, wie das folgende Diagramm zeigt.

Diagramm der Direct3d-Gerätearchitektur

Direct3D unterstützt zwei Haupttypen von Direct3D-Geräten:

  • Ein Hal-Gerät mit hardwarebeschleunigte Rasterung und Schattierung mit Hardware- und Software-Vertexverarbeitung
  • 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 am häufigsten verwendete Möglichkeit, diese Geräte zu nutzen, besteht darin, das Hal-Gerät zum Versenden 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 von einer Anwendung erstellten Direct3D-Gerät muss den Funktionen der Hardware entsprechen, auf der die Anwendung ausgeführt wird. Direct3D bietet Renderingfunktionen, entweder durch Den 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 wesentlich bessere Leistung als Softwaregeräte. Der Hal-Gerätetyp ist auf allen direct3D-unterstützten Grafikadaptern verfügbar. In den meisten Fällen zielen Anwendungen auf Computer mit Hardwarebeschleunigung ab und basieren auf der Softwareemulation, um Computer mit niedrigeren Enden aufzunehmen.

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

Da das Verhalten der Software- und Referenzgeräte, die mit Direct3D 9 bereitgestellt werden, mit dem des Hal-Geräts identisch ist, funktioniert der anwendungsautorierte Anwendungscode für die Arbeit mit dem Hal-Gerät ohne Änderungen mit der Software oder referenzierten Geräten. Das bereitgestellte Software- oder Referenzgeräteverhalten ist identisch mit dem des Hal-Geräts, aber die Gerätefunktionen variieren, und ein bestimmtes Softwaregerät kann eine viel kleinere Gruppe von Funktionen implementieren.

In diesem Abschnitt

Thema Beschreibung

Gerätetypen

Zu den Direct3D-Gerätetypen gehören Hardware Abstraction Layer (Hal)-Geräte und der Referenzrasterizer.

Fenster im Vollbildmodus

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

Verloren gegangene Geräte

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

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 für die Anzeige darstellt, wird der erste Puffer in der Swapchain anstelle des angezeigten Puffers verwendet. Dieser Vorgang wird als Swapping oder Flipping bezeichnet.

Einführung in Rasterungsregeln

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

 

Lernanleitung für Direct3D-Grafiken