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.
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 |