Condividi tramite


enumerazione D3D10_MAP (d3d10.h)

Identifica una risorsa a cui accedere per la lettura e la scrittura dalla CPU. Le applicazioni possono combinare uno o più flag.

Sintassi

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
} ;

Costanti

 
D3D10_MAP_READ
Valore: 1
La risorsa viene mappata per la lettura. La risorsa deve essere stata creata con l'accesso in lettura (vedere D3D10_CPU_ACCESS_READ).
D3D10_MAP_WRITE
Valore: 2
La risorsa viene mappata per la scrittura. La risorsa deve essere stata creata con l'accesso in scrittura (vedere D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_READ_WRITE
Valore: 3
La risorsa viene mappata per la lettura e la scrittura. La risorsa deve essere stata creata con accesso in lettura e scrittura (vedere D3D10_CPU_ACCESS_READ e D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_DISCARD
Valore: 4
La risorsa viene mappata per la scrittura; il contenuto precedente della risorsa verrà non definito. La risorsa deve essere stata creata con l'accesso in scrittura (vedere D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_NO_OVERWRITE
Valore: 5
La risorsa viene mappata per la scrittura; il contenuto esistente della risorsa non può essere sovrascritto (vedere Osservazioni). Questo flag è valido solo nei buffer dei vertici e degli indici. La risorsa deve essere stata creata con l'accesso in scrittura (vedere D3D10_CPU_ACCESS_WRITE). Impossibile usare in una risorsa creata con il flag di D3D10_BIND_CONSTANT_BUFFER .

Commenti

Questa enumerazione viene usata in ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map e ID3D10Texture3D::Map.

Significato di D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_NO_OVERWRITE indica che l'applicazione promette di non scrivere nei dati usati dalla fase IA ( Input Assembler ). In cambio, la GPU consente all'applicazione di scrivere in altre parti dello stesso buffer. L'applicazione deve assicurarsi che non scrive i dati in uso dalla fase IA.

Si consideri ad esempio il buffer illustrato nel diagramma seguente. Se viene emessa una chiamata Draw che usa vertici 4-6, un'applicazione che chiama Map in questo buffer deve assicurarsi che non scrive nei vertici a cui accede la chiamata Draw durante il rendering.

Diagramma dei dati dei vertici in diverse fasi di utilizzo Tuttavia, assicurarsi che questo possa essere difficile, perché la GPU spesso è molti fotogrammi dietro la CPU in termini di quale frame è attualmente in elaborazione. Tenere traccia delle sezioni di una risorsa usate a causa delle chiamate effettuate da 2 a 5 fotogrammi fa è difficile e soggetto a errori. A causa di questo, è consigliabile che le applicazioni scrivono solo nelle parti non inizializzate di una risorsa quando si usa D3D10_MAP_WRITE_NO_OVERWRITE.

Utilizzo comune di D3D10_MAP_WRITE_DISCARD con D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_DISCARD e D3D10_MAP_WRITE_NO_OVERWRITE vengono normalmente usati insieme a buffer di indice/vertice dinamici, anche se possono essere usati anche con trame dinamiche.

Un uso comune di questi due flag implica il riempimento di buffer di indice/vertice dinamici con geometria che può essere vista dalla posizione corrente della fotocamera. La prima volta che i dati vengono immessi nel buffer in un determinato frame, viene chiamato Map con D3D10_MAP_WRITE_DISCARD; in questo modo invalida il contenuto precedente del buffer. Il buffer viene quindi riempito con tutti i dati disponibili.

Le scritture successive nel buffer all'interno dello stesso frame devono usare D3D10_MAP_WRITE_NO_OVERWRITE. In questo modo la CPU potrà accedere a una risorsa potenzialmente usata dalla GPU, purché vengano rispettate le restrizioni descritte in precedenza.

Requisiti

Requisito Valore
Intestazione d3d10.h

Vedi anche

Enumerazioni delle risorse