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. Verwenden Sie die folgende Tabelle, um die Verwendung auszuwählen, die am besten beschreibt, wie von der CPU und/oder der GPU auf die Ressource zugegriffen werden muss. Natürlich wird es Leistungskonflikten geben.
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
 

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

Weitere Informationen

Ressourcenaufzählungen