Gerätetypen
Zu den Direct3D-Gerätetypen gehören Hardware Abstraction Layer (Hal)-Geräte und der Referenzrasterizer.
HAL-Gerät
Der primäre Gerätetyp ist das Hal-Gerät, das hardwarebeschleunigte Rasterung sowie Hardware- und Softwarevertexverarbeitung unterstützt. Wenn der Computer, auf dem Ihre Anwendung ausgeführt wird, mit einem Anzeigeadapter ausgestattet ist, der Direct3D unterstützt, sollte die Anwendung sie für Direct3D-Vorgänge verwenden. Direct3D-Hal-Geräte implementieren alle oder einen Teil der Transformation, Beleuchtung und Rasterung von Modulen in der 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, erhält sie die beste Leistung mithilfe eines Hal-Geräts.
Referenzgerät
Direct3D unterstützt einen zusätzlichen Gerätetyp, der als Referenzgerät oder Referenzrasterizer bezeichnet wird. Im Gegensatz zu einem Softwaregerät unterstützt der Referenzrasterizer jedes Direct3D-Feature. Dieses Gerät soll für Debuggingzwecke verwendet werden und ist 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 werden und in der Software implementiert werden, sind die Ergebnisse nicht sehr schnell. Der Referenzrasterizer verwendet wann immer möglich spezielle CPU-Anweisungen, ist jedoch nicht für Einzelhandelsanwendungen vorgesehen. Verwenden Sie den Referenzrasterizer nur für Featuretests oder Demonstrationszwecke.
HAL im Vergleich zu REF-Geräten
HAL (Hardware Abstraction Layer)-Geräte und REF (REFerence rasterizer)-Geräte sind die beiden Haupttypen von Direct3D-Geräten; das erste basiert auf der Hardware-Unterstützung und ist sehr schnell, unterstützt aber möglicherweise nicht alles; das zweite verwendet keine Hardware-Beschleunigung und ist daher sehr langsam, unterstützt aber garantiert alle Direct3D-Funktionen auf die richtige Weise. Im Allgemeinen müssen Sie nur HAL-Geräte verwenden, aber wenn Sie ein erweitertes Feature verwenden, das Ihre Grafikkarte nicht unterstützt, müssen Sie möglicherweise auf REF zurückgreifen.
Der andere Fall, in dem Sie REF verwenden sollten, ist, wenn das HAL-Gerät seltsame Ergebnisse liefert, d. h. wenn Sie sicher sind, dass Ihr Code korrekt ist, das Ergebnis aber nicht Ihren Erwartungen entspricht. Das REF-Gerät verhält sich garantiert richtig, daher können Sie Ihre Anwendung auf dem REF-Gerät testen und sehen, ob das seltsame Verhalten weiterhin besteht. Wenn dies nicht der Fall ist, bedeutet dies, dass entweder (a) Ihre Anwendung davon ausgeht, dass die Grafikkarte etwas unterstützt, was nicht der Fall ist, oder (b) dass es sich um einen Treiberfehler handelt. Wenn es immer noch nicht mit dem REF-Gerät funktioniert, handelt es sich um einen Anwendungsfehler.
Hardware vs. Software Vertex Processing
Hardware im Vergleich zur Softwarevertexverarbeitung gilt nur für HAL-Geräte. Wenn Sie Scheitelpunkte durch die Pipeline schieben, müssen diese transformiert (durch die Welt-, Ansichts- und Projektionsmatrizen) und beleuchtet werden (durch die in D3D integrierten Lichter) - diese Verarbeitungsphase wird als T&L (für Transformation & Lighting) bezeichnet. Die Hardwarevertexverarbeitung bedeutet, dass dies in der Hardware erfolgt, wenn die Hardware sie unterstützt; ergo, Software-Vertexverarbeitung erfolgt in Software. Die allgemeine Vorgehensweise besteht darin, zuerst ein Hardware-T&L-Gerät zu erstellen, und wenn dies fehlschlägt, versuchen Sie Mixed, und wenn dies fehlschlägt, versuchen Sie es mit Software. (Wenn die Software fehlschlägt, geben Sie auf und beenden Sie das Programm mit einer Fehlermeldung).
Verwandte Themen