Compartir a través de


enumeración D3D10_MAP (d3d10.h)

Identifica un recurso al que se va a acceder para leer y escribir mediante la CPU. Las aplicaciones pueden combinar una o varias de estas marcas.

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
El recurso se asigna para la lectura. El recurso debe haberse creado con acceso de lectura (consulte D3D10_CPU_ACCESS_READ).
D3D10_MAP_WRITE
Valor: 2
El recurso se asigna para escribir. El recurso debe haberse creado con acceso de escritura (consulte D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_READ_WRITE
Valor: 3
El recurso se asigna para leer y escribir. El recurso debe haberse creado con acceso de lectura y escritura (consulte D3D10_CPU_ACCESS_READ y D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_DISCARD
Valor: 4
El recurso se asigna para escribir; El contenido anterior del recurso no estará definido. El recurso debe haberse creado con acceso de escritura (consulte D3D10_CPU_ACCESS_WRITE).
D3D10_MAP_WRITE_NO_OVERWRITE
Valor: 5
El recurso se asigna para escribir; no se puede sobrescribir el contenido existente del recurso (vea comentarios). Esta marca solo es válida en búferes de vértices e índices. El recurso debe haberse creado con acceso de escritura (consulte D3D10_CPU_ACCESS_WRITE). No se puede usar en un recurso creado con la marca D3D10_BIND_CONSTANT_BUFFER .

Comentarios

Esta enumeración se usa en ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map e ID3D10Texture3D::Map.

Significado de D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_NO_OVERWRITE significa que la aplicación promete no escribir en los datos que usa la fase ensamblador de entrada (IA). A cambio, la GPU permite a la aplicación escribir en otras partes del mismo búfer. La aplicación debe asegurarse de que no escribe ningún dato en uso por la fase de IA.

Por ejemplo, considere el búfer que se muestra en el diagrama siguiente. Si se ha emitido una llamada a Draw que usa vértices 4-6, una aplicación que llama a Map en este búfer debe asegurarse de que no escribe en los vértices a los que accederá la llamada a Draw durante la representación.

Diagrama de datos de vértices en diferentes fases de uso Sin embargo, asegurarse de que esto puede ser difícil, ya que la GPU suele tener muchos fotogramas detrás de la CPU en términos del fotograma que está procesando actualmente. Realizar un seguimiento de las secciones de un recurso que se usan debido a las llamadas realizadas hace entre 2 y 5 fotogramas es difícil y propensa a errores. Por este motivo, se recomienda que las aplicaciones solo escriban en las partes no inicializadas de un recurso al usar D3D10_MAP_WRITE_NO_OVERWRITE.

Uso común de D3D10_MAP_WRITE_DISCARD con D3D10_MAP_WRITE_NO_OVERWRITE

D3D10_MAP_WRITE_DISCARD y D3D10_MAP_WRITE_NO_OVERWRITE se usan normalmente junto con búferes dinámicos de índices o vértices, aunque también se pueden usar con texturas dinámicas.

Un uso común de estas dos marcas implica rellenar los búferes dinámicos de índice o vértice con geometría que se puede ver desde la posición actual de la cámara. La primera vez que los datos se introducen en el búfer en un marco determinado, se llama a Map con D3D10_MAP_WRITE_DISCARD; si lo hace, invalida el contenido anterior del búfer. Después, el búfer se rellena con todos los datos disponibles.

Las escrituras posteriores en el búfer dentro del mismo marco deben usar D3D10_MAP_WRITE_NO_OVERWRITE. Esto permitirá que la CPU tenga acceso a un recurso que puede usar la GPU siempre y cuando se respeten las restricciones descritas anteriormente.

Requisitos

Requisito Valor
Header d3d10.h

Consulte también

Enumeraciones de recursos