Gerätetypen (Direct3D 9)

HAL-Gerät

Der primäre Gerätetyp ist das hal-Gerät, das die hardwarebeschleunigte Rasterung und die Hardware- und Softwarevertexverarbeitung unterstützt. Wenn der Computer, auf dem Ihre Anwendung ausgeführt wird, mit einem Grafikkarte ausgestattet ist, der Direct3D unterstützt, sollte ihre Anwendung diese für Direct3D-Vorgänge verwenden. Direct3D-Hal-Geräte implementieren die gesamte oder einen Teil der Transformations-, Beleuchtungs- und Rasterungsmodule in Hardware.

Anwendungen greifen nicht direkt auf Grafikkarten zu. Sie rufen Direct3D-Funktionen und -Methoden auf. Direct3D greift über die Hal auf die Hardware zu. Wenn der Computer, auf dem ihre Anwendung ausgeführt wird, die Hal unterstützt, erzielt er die beste Leistung, indem ein hal-Gerät verwendet wird.

Um ein hal-Gerät zu erstellen, rufen Sie CreateDevice auf, indem Sie D3DDEVTYPE_HAL als Gerätetyp verwenden.

Referenzgerät

Direct3D unterstützt einen zusätzlichen Gerätetyp, der als Referenzgerät oder Verweisraster bezeichnet wird. Im Gegensatz zu einem Softwaregerät unterstützt der Verweisraster jedes Direct3D-Feature. Dieses Gerät ist für Debugzwecke vorgesehen und daher nur auf Computern verfügbar, auf denen das DirectX SDK installiert wurde. Da diese Features für Genauigkeit und nicht für Geschwindigkeit implementiert sind und in Software implementiert sind, sind die Ergebnisse nicht sehr schnell. Der Referenzraster verwendet, wann immer es möglich ist, spezielle CPU-Anweisungen, ist aber nicht für Einzelhandelsanwendungen vorgesehen. Verwenden Sie den Verweisraster nur für Featuretests oder Demonstrationszwecke. Um ein Referenzgerät zu erstellen, rufen Sie die CreateDevice-Methode mit D3DDEVTYPE_REF als Gerätetyp auf.

HAL im Vergleich zu REF-Geräten

HAL-Geräte (Hardware Abstraction Layer) und REF-Geräte (REFerence Rasterizer) sind die beiden Standard Typen von Direct3D-Geräten. Die erste basiert auf der Hardwareunterstützung und ist sehr schnell, unterstützt aber möglicherweise nicht alles. Während das zweite Gerät keine Hardwarebeschleunigung verwendet, ist sehr langsam, unterstützt aber garantiert den gesamten Satz von Direct3D-Features. auf die richtige Weise. Im Allgemeinen müssen Sie immer nur HAL-Geräte verwenden, aber wenn Sie ein erweitertes Feature verwenden, das Ihre Grafik Karte nicht unterstützt, müssen Sie möglicherweise auf REF zurückgreifen.

Das andere Mal, wenn Sie REF verwenden möchten, ist, wenn das HAL-Gerät seltsame Ergebnisse liefert. Das heißt, Sie sind sicher, dass Ihr Code richtig ist, aber das Ergebnis ist nicht das, was Sie erwarten. Das REF-Gerät verhält sich garantiert richtig, daher können Sie Ihre Anwendung auf dem REF-Gerät testen und überprüfen, ob das seltsame Verhalten weiterhin besteht. Wenn dies nicht der Fall ist, bedeutet dies, dass entweder (a) Ihre Anwendung davon ausgeht, dass die Grafik Karte etwas unterstützt, das sie nicht unterstützt, oder (b) es sich um einen Treiberfehler handelt. Wenn es immer noch nicht mit dem REF-Gerät funktioniert, handelt es sich um einen Anwendungsfehler.

Hardware- und Softwarevertexverarbeitung

Hardware im Vergleich zur Softwarevertexverarbeitung gilt nur wirklich für HAL-Geräte. Wenn Sie Scheitelpunkte durch die Pipeline pushen, müssen sie transformiert (wiederum durch die Welt-, Ansichts- und Projektionsmatrizen) und beleuchtet (durch die integrierten Lichter von D3D) – diese Verarbeitungsphase wird als T&L (für Transformationsbeleuchtung & ) bezeichnet. Hardwarevertexverarbeitung bedeutet, dass dies in Hardware erfolgt, wenn die Hardware sie unterstützt; ergo, softwarevertex processing is done is software. Die allgemeine Praxis besteht darin, zuerst zu versuchen, ein Hardware-T&L-Gerät zu erstellen, und wenn dies fehlschlägt, versuchen Sie es mit Der Software. (Wenn die Software fehlschlägt, geben Sie auf, und beenden Sie sie mit einem Fehler.)

Direct3D-Geräte