Compartilhar via


D3D10_MAP enumeração (d3d10.h)

Identifica um recurso a ser acessado para leitura e gravação pela CPU. Os aplicativos podem combinar um ou mais desses sinalizadores.

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

Constantes

 
D3D10_MAP_READ
Valor: 1
O recurso é mapeado para leitura. O recurso deve ter sido criado com acesso de leitura (consulte D3D10_CPU_ACCESS_READ).
D3D10_MAP_WRITE
Valor: 2
O recurso é mapeado para gravação. O recurso deve ter sido criado com acesso de gravação (consulte D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_READ_WRITE
Valor: 3
O recurso é mapeado para leitura e gravação. O recurso deve ter sido criado com acesso de leitura e gravação (consulte D3D10_CPU_ACCESS_READ e D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_DISCARD
Valor: 4
O recurso é mapeado para gravação; o conteúdo anterior do recurso será indefinido. O recurso deve ter sido criado com acesso de gravação (consulte D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_NO_OVERWRITE
Valor: 5
O recurso é mapeado para gravação; o conteúdo existente do recurso não pode ser substituído (consulte Comentários). Esse sinalizador só é válido em buffers de vértice e índice. O recurso deve ter sido criado com acesso de gravação (consulte D3D10_CPU_ACCESS_WRITE). Não pode ser usado em um recurso criado com o sinalizador D3D10_BIND_CONSTANT_BUFFER .

Comentários

Essa enumeração é usada em ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map e ID3D10Texture3D::Map.

Significado de D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_NO_OVERWRITE significa que o aplicativo promete não gravar em dados que o estágio do Assembler de Entrada (IA) está usando. Em troca, a GPU permite que o aplicativo escreva em outras partes do mesmo buffer. O aplicativo deve garantir que ele não escreva sobre nenhum dado em uso pelo estágio IA.

Por exemplo, considere o buffer ilustrado no diagrama a seguir. Se uma chamada de Desenho tiver sido emitida que usa vértices 4-6, um aplicativo que chama Map nesse buffer deverá garantir que ele não escreva nos vértices que a chamada de Desenho acessará durante a renderização.

Diagrama de dados de vértice em diferentes estágios de utilização No entanto, garantir que isso possa ser difícil, pois a GPU geralmente está muitos quadros atrás da CPU em termos de qual quadro está sendo processada no momento. Manter o controle de quais seções de um recurso estão sendo usadas devido a chamadas feitas de 2 a 5 quadros atrás é difícil e propenso a erros. Por isso, é recomendável que os aplicativos só escrevam nas partes não inicializadas de um recurso ao usar D3D10_MAP_WRITE_NO_OVERWRITE.

Uso comum de D3D10_MAP_WRITE_DISCARD com D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_DISCARD e D3D10_MAP_WRITE_NO_OVERWRITE normalmente são usados em conjunto com buffers dinâmicos de índice/vértice, embora também possam ser usados com texturas dinâmicas.

Um uso comum desses dois sinalizadores envolve o preenchimento de buffers dinâmicos de índice/vértice com geometria que pode ser vista na posição atual da câmera. Na primeira vez que os dados são inseridos no buffer em um determinado quadro, Map é chamado com D3D10_MAP_WRITE_DISCARD; Isso invalida o conteúdo anterior do buffer. Em seguida, o buffer é preenchido com todos os dados disponíveis.

As gravações subsequentes no buffer dentro do mesmo quadro devem usar D3D10_MAP_WRITE_NO_OVERWRITE. Isso permitirá que a CPU acesse um recurso que está potencialmente sendo usado pela GPU, desde que as restrições descritas anteriormente sejam respeitadas.

Requisitos

Requisito Valor
Cabeçalho d3d10.h

Confira também

Enumerações de recursos