enumeración D3D10_USAGE (d3d10.h)
Identifica el uso esperado de recursos durante la representación. El uso refleja directamente si la CPU o la GPU pueden acceder a un recurso.
Syntax
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Constantes
D3D10_USAGE_DEFAULT Valor: 0 Recurso que requiere acceso de lectura y escritura mediante la GPU. Es probable que sea la opción de uso más común. |
D3D10_USAGE_IMMUTABLE Valor: 1 Recurso que solo puede leer la GPU. No se puede escribir mediante la GPU y no se puede acceder a él en absoluto mediante la CPU. Este tipo de recurso se debe inicializar cuando se crea, ya que no se puede cambiar después de la creación. |
D3D10_USAGE_DYNAMIC Valor: 2 Un recurso al que puede acceder tanto la GPU como la CPU (solo escritura). Un recurso dinámico es una buena opción para un recurso que la CPU actualizará al menos una vez por fotograma. Para escribir en un recurso dinámico en la CPU, use un método Map . Puede escribir en un recurso dinámico en la GPU mediante CopyResource o CopySubresourceRegion. |
D3D10_USAGE_STAGING Valor: 3 Recurso que admite la transferencia de datos (copia) desde la GPU a la CPU. |
Comentarios
Una aplicación identifica la forma en que se va a usar un recurso (su uso) en una descripción de recursos. Hay varias estructuras para crear recursos, como: D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC y D3DX10_IMAGE_LOAD_INFO.
Diferencias entre Direct3D 9 y Direct3D 10: En Direct3D 9, especifique el tipo de memoria en la que se debe crear un recurso en el momento de la creación de recursos (mediante D3DPOOL). Fue el trabajo de una aplicación decidir qué grupo de memoria proporcionaría la mejor combinación de funcionalidad y rendimiento. En Direct3D 10, una aplicación ya no especifica en qué tipo de memoria (el grupo) se va a crear un recurso. En su lugar, especifique el uso previsto del recurso y deje que el tiempo de ejecución (en conjunto con el controlador y un administrador de memoria) elija el tipo de memoria que logrará el mejor rendimiento. |
Restricciones de uso de recursos
Cada uso determina un equilibrio entre la funcionalidad y el rendimiento. En general, el acceso a recursos se realiza con las siguientes API.- El acceso a la CPU se realiza con ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map o ID3D10Texture3D::Map
- El acceso a GPU se realiza con CopySubresourceRegion, CopyResource o UpdateSubresource.
Resource Usage | Default | Dinámica | Inmutable | Ensayo |
---|---|---|---|---|
GPU-Read | sí | Sí¹ | sí | Sí1, 2 |
GPU-Write | Sí¹ | Sí1, 2 | ||
CPU-Read | Sí1, 2 | |||
CPU-Write | sí | Sí1, 2 |
- 1: esto está restringido a CopySubresourceRegion, CopyResource y UpdateSubresource.
- 2- No puede ser un búfer de galería de símbolos de profundidad o un destino de representación de muestreo múltiple.
Opciones de enlace de recursos
Para maximizar el rendimiento, no todas las opciones de uso de recursos se pueden usar como recursos de entrada o salida en la canalización. En esta tabla se identifican estas limitaciones.El recurso se puede enlazar como | Default | Dinámica | Inmutable | Ensayo |
---|---|---|---|---|
Entrada en una fase | Sí³ | Sí⁴ | sí | |
Salida de una fase | Sí³ |
- 3- Si se enlaza como entrada y salida mediante vistas diferentes, cada vista debe usar subrecursos diferentes.
- 4 - El recurso solo se puede crear con un único subrecurso. El recurso no puede ser una matriz de texturas. El recurso no puede ser una cadena de mapas mip.
Requisitos
Requisito | Valor |
---|---|
Header | d3d10.h |