enumeración D3DPOOL
Define la clase de memoria que contiene los búferes de un recurso.
Syntax
typedef enum D3DPOOL {
D3DPOOL_DEFAULT = 0,
D3DPOOL_MANAGED = 1,
D3DPOOL_SYSTEMMEM = 2,
D3DPOOL_SCRATCH = 3,
D3DPOOL_FORCE_DWORD = 0x7fffffff
} D3DPOOL, *LPD3DPOOL;
Constantes
-
D3DPOOL_DEFAULT
-
Los recursos se colocan en el grupo de memoria más adecuado para el conjunto de usos solicitados para el recurso especificado. Esto suele ser la memoria de vídeo, incluida la memoria de vídeo local y la memoria AGP. El grupo de D3DPOOL_DEFAULT es independiente de D3DPOOL_MANAGED y D3DPOOL_SYSTEMMEM, y especifica que el recurso se coloca en la memoria preferida para el acceso al dispositivo. Tenga en cuenta que D3DPOOL_DEFAULT nunca indica que D3DPOOL_MANAGED o D3DPOOL_SYSTEMMEM deben elegirse como tipo de grupo de memoria para este recurso. Las texturas colocadas en el grupo de D3DPOOL_DEFAULT no se pueden bloquear a menos que sean texturas dinámicas o sean formatos privados, FOURCC y controladores. Para acceder a las texturas desbloqueables, debe usar funciones como IDirect3DDevice9::UpdateSurface, IDirect3DDevice9::UpdateTexture, IDirect3DDevice9::GetFrontBufferData y IDirect3DDevice9::GetRenderTargetData. D3DPOOL_MANAGED es probablemente una mejor opción que D3DPOOL_DEFAULT para la mayoría de las aplicaciones. Tenga en cuenta que algunas texturas creadas en formatos de píxeles propietarios del controlador, desconocidas para el tiempo de ejecución de Direct3D, se pueden bloquear. Tenga en cuenta también que, a diferencia de las texturas, los búferes de retroceso de la cadena de intercambio, los destinos de representación, los búferes de vértices y los búferes de índice se pueden bloquear. Cuando se pierde un dispositivo, los recursos creados con D3DPOOL_DEFAULT deben liberarse antes de llamar a IDirect3DDevice9::Reset. Para obtener más información, consulta Dispositivos perdidos (Direct3D 9).
Al crear recursos con D3DPOOL_DEFAULT, si ya se ha confirmado la memoria de tarjeta de vídeo, los recursos administrados se expulsarán para liberar suficiente memoria para satisfacer la solicitud.
-
D3DPOOL_MANAGED
-
Los recursos se copian automáticamente en la memoria accesible para el dispositivo según sea necesario. Los recursos administrados están respaldados por la memoria del sistema y no es necesario volver a crearlos cuando se pierde un dispositivo. Consulta Administrar recursos (Direct3D 9) para obtener más información. Los recursos administrados se pueden bloquear. Solo se modifica directamente la copia de memoria del sistema. Direct3D copia los cambios en la memoria accesible para controladores según sea necesario.
Diferencias entre Direct3D 9 y Direct3D 9Ex:
D3DPOOL_MANAGED es válido con IDirect3DDevice9; sin embargo, no es válido con IDirect3DDevice9Ex. -
D3DPOOL_SYSTEMMEM
-
Los recursos se colocan en la memoria que normalmente no es accesible por el dispositivo Direct3D. Esta asignación de memoria consume ram del sistema, pero no reduce la RAM paginable. Estos recursos no necesitan volver a crearse cuando se pierde un dispositivo. Los recursos de este grupo se pueden bloquear y se pueden usar como origen para una operación IDirect3DDevice9::UpdateSurface o IDirect3DDevice9::UpdateTexture en un recurso de memoria creado con D3DPOOL_DEFAULT.
-
D3DPOOL_SCRATCH
-
Los recursos se colocan en la RAM del sistema y no es necesario volver a crearlos cuando se pierde un dispositivo. Estos recursos no están enlazados por restricciones de formato o tamaño del dispositivo. Por este motivo, el dispositivo Direct3D no puede acceder a estos recursos ni establecerlos como texturas ni destinos de representación. Sin embargo, estos recursos siempre se pueden crear, bloquear y copiar.
-
D3DPOOL_FORCE_DWORD
-
Fuerza esta enumeración a compilar a 32 bits de tamaño. Sin este valor, algunos compiladores permitirían que esta enumeración se compile en un tamaño distinto de 32 bits. Este valor no se utiliza.
Observaciones
Todos los tipos de grupo son válidos con todos los recursos, incluidos los búferes de vértices, los búferes de índice, las texturas y las superficies.
Las tablas siguientes indican restricciones en los tipos de grupo para destinos de representación, galerías de símbolos de profundidad y usos dinámicos y mipmap. Una x indica una combinación compatible; la falta de una x indica incompatibilidad.
grupo | D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL |
---|---|---|
D3DPOOL_DEFAULT | x | x |
D3DPOOL_MANAGED | ||
D3DPOOL_SCRATCH | ||
D3DPOOL_SYSTEMMEM |
grupo | D3DUSAGE_DYNAMIC | D3DUSAGE_AUTOGENMIPMAP |
---|---|---|
D3DPOOL_DEFAULT | x | x |
D3DPOOL_MANAGED | x | |
D3DPOOL_SCRATCH | ||
D3DPOOL_SYSTEMMEM | x |
Para obtener más información sobre los tipos de uso, consulte D3DUSAGE.
Los grupos no se pueden mezclar para objetos diferentes contenidos en un recurso (niveles mip en un mapa MIP) y, cuando se elige un grupo, no se puede cambiar.
Las aplicaciones deben usar D3DPOOL_MANAGED para la mayoría de los recursos estáticos, ya que esto evita que la aplicación tenga que lidiar con los dispositivos perdidos. (El tiempo de ejecución restaura los recursos administrados). Esto es especialmente beneficioso para los sistemas de arquitectura de memoria unificada (UMA). Otros recursos dinámicos no son una buena coincidencia para D3DPOOL_MANAGED. De hecho, los búferes de índice y los búferes de vértices no se pueden crear mediante D3DPOOL_MANAGED junto con D3DUSAGE_DYNAMIC.
En el caso de las texturas dinámicas, a veces es conveniente usar un par de texturas de memoria de vídeo y memoria del sistema, asignando la memoria de vídeo mediante D3DPOOL_DEFAULT y la memoria del sistema mediante D3DPOOL_SYSTEMMEM. Puede bloquear y modificar los bits de la textura de memoria del sistema mediante un método de bloqueo. A continuación, puede actualizar la textura de memoria de vídeo mediante IDirect3DDevice9::UpdateTexture.
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Consulte también