Administración de recursos (Direct3D 9)
La administración de recursos es el proceso en el que los recursos se promueven desde el almacenamiento de memoria del sistema al almacenamiento accesible desde el dispositivo y se descartan desde el almacenamiento accesible desde el dispositivo. El tiempo de ejecución de Direct3D tiene su propio algoritmo de administración basado en una técnica de prioridad menos usada recientemente. Direct3D cambia a una técnica de prioridad usada más recientemente cuando detecta que se usan más recursos de los que pueden coexistir en la memoria accesible para el dispositivo en un solo fotograma, entre IDirect3DDevice9::BeginScene e IDirect3DDevice9::EndScene llamadas.
Use la marca D3DPOOL_DEFAULT en el momento de la creación para especificar que un recurso se coloca 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 del puerto de gráficos acelerados (AGP). Los recursos del grupo predeterminado no se conservan a través de transiciones entre los estados perdidos y operativos del dispositivo. Estos recursos se deben liberar antes de llamar al restablecimiento y, a continuación, se deben volver a crear.
Use la marca D3DPOOL_MANAGED en el momento de la creación para especificar un recurso administrado. Los recursos administrados se conservan a través de las transiciones entre los estados perdidos y operativos del dispositivo. Estos recursos existen tanto en vídeo como en memoria del sistema. Un recurso administrado se copiará en la memoria de vídeo cuando sea necesario durante la representación. El dispositivo se puede restaurar con una llamada a IDirect3DDevice9::Reset y estos recursos siguen funcionando normalmente sin volver a cargarse con datos. Sin embargo, si el dispositivo debe destruirse y volver a crearse, se deben volver a crear todos los recursos.
No se recomienda la administración de recursos para los recursos que cambian con alta frecuencia. Por ejemplo, los búferes de vértices e índices que se usan para atravesar un gráfico de escena cada fotograma que representa solo la geometría visible para el usuario cambia cada fotograma. Dado que la memoria del sistema respalda los recursos administrados, los cambios constantes deben actualizarse en la memoria del sistema, lo que puede provocar una degradación grave del rendimiento. En este escenario concreto, se deben usar D3DPOOL_DEFAULT junto con D3DUSAGE_DYNAMIC .
Otro ejemplo para el que la administración de recursos no se recomienda (y no se permite explícitamente por el tiempo de ejecución) es la administración de una textura creada con D3DUSAGE_RENDERTARGET. Si el tiempo de ejecución administra la memoria utilizada por los destinos de representación, el contenido tendría que copiarse constantemente en la memoria del sistema durante la representación, lo que provocaría grandes penalizaciones de rendimiento. Por este motivo, los destinos de representación deben crearse en el grupo predeterminado. Si se necesita acceso a la CPU de los datos contenidos en un destino de representación, los datos se deben copiar en un recurso creado en D3DPOOL_SYSTEMMEM mediante IDirect3DDevice9::UpdateTexture o IDirect3DDevice9::UpdateSurface
Para obtener más información sobre el estado perdido de un dispositivo, consulte Dispositivos perdidos (Direct3D 9).
Temas relacionados