D3D10_MAP-Enumeration (d3d10.h)
Gibt eine Ressource an, auf die von der CPU zum Lesen und Schreiben zugegriffen werden soll. Anwendungen können eines oder mehrere dieser Flags kombinieren.
Syntax
typedef enum D3D10_MAP {
D3D10_MAP_READ = 1,
D3D10_MAP_WRITE = 2,
D3D10_MAP_READ_WRITE = 3,
D3D10_MAP_WRITE_DISCARD = 4,
D3D10_MAP_WRITE_NO_OVERWRITE = 5
} ;
Konstanten
D3D10_MAP_READ Wert: 1 Die Ressource wird zum Lesen zugeordnet. Die Ressource muss mit Lesezugriff erstellt worden sein (siehe D3D10_CPU_ACCESS_READ). |
D3D10_MAP_WRITE Wert: 2 Die Ressource wird zum Schreiben zugeordnet. Die Ressource muss mit Schreibzugriff erstellt worden sein (siehe D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_READ_WRITE Wert: 3 Die Ressource wird zum Lesen und Schreiben zugeordnet. Die Ressource muss mit Lese- und Schreibzugriff erstellt worden sein (siehe D3D10_CPU_ACCESS_READ und D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_DISCARD Wert: 4 Die Ressource wird zum Schreiben zugeordnet. der vorherige Inhalt der Ressource ist nicht definiert. Die Ressource muss mit Schreibzugriff erstellt worden sein (siehe D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_NO_OVERWRITE Wert: 5 Die Ressource wird zum Schreiben zugeordnet. der vorhandene Inhalt der Ressource kann nicht überschrieben werden (siehe Hinweise). Dieses Flag ist nur für Scheitel- und Indexpuffer gültig. Die Ressource muss mit Schreibzugriff erstellt worden sein (siehe D3D10_CPU_ACCESS_WRITE). Kann nicht für eine Ressource verwendet werden, die mit dem flag D3D10_BIND_CONSTANT_BUFFER erstellt wurde. |
Hinweise
Diese Enumeration wird in ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map und ID3D10Texture3D::Map verwendet.
Bedeutung von D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_NO_OVERWRITE bedeutet, dass die Anwendung verspricht, nicht in Daten zu schreiben, die von der IA-Phase ( Input Assembler ) verwendet werden. Im Gegenzug ermöglicht die GPU der Anwendung, in andere Teile desselben Puffers zu schreiben. Die Anwendung muss sicherstellen, dass sie keine Daten überschreibt, die von der IA-Phase verwendet werden.Betrachten Sie beispielsweise den Puffer, der im folgenden Diagramm dargestellt ist. Wenn ein Draw-Aufruf ausgegeben wurde, der die Scheitelpunkte 4 bis 6 verwendet, muss eine Anwendung, die Map in diesem Puffer aufruft, sicherstellen, dass sie nicht in die Scheitelpunkte schreibt, auf die der Draw-Aufruf während des Renderings zugreift.

Allgemeine Verwendung von D3D10_MAP_WRITE_DISCARD mit D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_DISCARD und D3D10_MAP_WRITE_NO_OVERWRITE werden normalerweise in Verbindung mit dynamischen Index-/Vertexpuffern verwendet, obwohl sie auch mit dynamischen Texturen verwendet werden können.Eine häufige Verwendung dieser beiden Flags umfasst das Auffüllen dynamischer Index-/Vertexpuffer mit Geometrie, die von der aktuellen Position der Kamera aus sichtbar ist. Wenn Daten zum ersten Mal in den Puffer eines bestimmten Frames eingegeben werden, wird Map mit D3D10_MAP_WRITE_DISCARD aufgerufen. Dadurch wird der vorherige Inhalt des Puffers ungültig. Der Puffer wird dann mit allen verfügbaren Daten gefüllt.
Nachfolgende Schreibvorgänge in den Puffer innerhalb desselben Frames sollten D3D10_MAP_WRITE_NO_OVERWRITE verwenden. Dadurch kann die CPU auf eine Ressource zugreifen, die möglicherweise von der GPU verwendet wird, solange die zuvor beschriebenen Einschränkungen eingehalten werden.
Anforderungen
Anforderung | Wert |
---|---|
Header | d3d10.h |