D3D10_USAGE-Enumeration (d3d10.h)
Identifiziert die erwartete Ressourcennutzung während des Renderings. Die Verwendung gibt direkt an, ob die CPU und/oder die GPU auf eine Ressource zugreifen können.
Syntax
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Konstanten
D3D10_USAGE_DEFAULT Wert: 0 Eine Ressource, die Lese- und Schreibzugriff durch die GPU erfordert. Dies ist wahrscheinlich die häufigste Verwendungsoption. |
D3D10_USAGE_IMMUTABLE Wert: 1 Eine Ressource, die nur von der GPU gelesen werden kann. Es kann nicht von der GPU geschrieben werden, und die CPU kann überhaupt nicht darauf zugreifen. Dieser Ressourcentyp muss beim Erstellen initialisiert werden, da er nach der Erstellung nicht mehr geändert werden kann. |
D3D10_USAGE_DYNAMIC Wert: 2 Eine Ressource, auf die sowohl die GPU als auch die CPU zugreifen kann (schreibgeschützter Schreibzugriff). Eine dynamische Ressource ist eine gute Wahl für eine Ressource, die von der CPU mindestens einmal pro Frame aktualisiert wird. Verwenden Sie eine Map-Methode , um in eine dynamische Ressource auf der CPU zu schreiben. Sie können mit CopyResource oder CopySubresourceRegion in eine dynamische Ressource auf der GPU schreiben. |
D3D10_USAGE_STAGING Wert: 3 Eine Ressource, die die Datenübertragung (Kopieren) von der GPU an die CPU unterstützt. |
Hinweise
Eine Anwendung identifiziert die Art und Weise, wie eine Ressource verwendet werden soll (ihre Verwendung) in einer Ressourcenbeschreibung. Es gibt mehrere Strukturen zum Erstellen von Ressourcen: D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC und D3DX10_IMAGE_LOAD_INFO.
Unterschiede zwischen Direct3D 9 und Direct3D 10: In Direct3D 9 geben Sie den Speichertyp an, in dem eine Ressource zum Zeitpunkt der Ressourcenerstellung (mit D3DPOOL) erstellt werden soll. Es war die Aufgabe einer Anwendung, zu entscheiden, welcher Speicherpool die beste Kombination aus Funktionalität und Leistung bietet. In Direct3D 10 gibt eine Anwendung nicht mehr an, in welchem Speichertyp (der Pool) eine Ressource erstellt werden soll. Stattdessen geben Sie die beabsichtigte Verwendung der Ressource an und lassen die Runtime (in Zusammenarbeit mit dem Treiber und einem Speicher-Manager) den Typ des Arbeitsspeichers auswählen, der die beste Leistung erzielt. |
Ressourcennutzungseinschränkungen
Jede Verwendung schreibt einen Kompromiss zwischen Funktionalität und Leistung vor. Im Allgemeinen erfolgt der Ressourcenzugriff mit den folgenden APIs.- Der CPU-Zugriff erfolgt mit ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map oder ID3D10Texture3D::Map
- Der GPU-Zugriff erfolgt mit CopySubresourceRegion, CopyResource oder UpdateSubresource.
Resource Usage | Standard | Dynamisch | Unveränderlich | Staging |
---|---|---|---|---|
GPU-Read | ja | ja¹ | ja | ja1, 2 |
GPU-Write | ja¹ | ja1, 2 | ||
CPU-Read | ja1, 2 | |||
CPU-Write | ja | ja1, 2 |
- 1: Dies ist auf CopySubresourceRegion, CopyResource und UpdateSubresource beschränkt.
- 2 : Es darf kein Tiefenschablonenpuffer oder ein mehrfachsampiges Renderziel sein.
Optionen für die Ressourcenbindung
Um die Leistung zu maximieren, können nicht alle Ressourcennutzungsoptionen als Eingabe- oder Ausgaberessourcen für die Pipeline verwendet werden. In dieser Tabelle werden diese Einschränkungen aufgeführt.Ressource kann als gebunden werden | Standard | Dynamisch | Unveränderlich | Staging |
---|---|---|---|---|
Eingabe in eine Phase | ja– | ja⁴ | ja | |
Ausgabe einer Phase | ja– |
- 3 – Wenn sie als Eingabe und Ausgabe mit unterschiedlichen Ansichten gebunden ist, muss jede Ansicht unterschiedliche Unterressourcen verwenden.
- 4 : Die Ressource kann nur mit einer einzelnen Unterressource erstellt werden. Die Ressource kann kein Texturarray sein. Die Ressource darf keine Mipmap-Kette sein.
Anforderungen
Anforderung | Wert |
---|---|
Header | d3d10.h |