énumération D3DPOOL

Définit la classe de mémoire qui contient les mémoires tampons d’une ressource.

Syntaxe

typedef enum D3DPOOL { 
  D3DPOOL_DEFAULT      = 0,
  D3DPOOL_MANAGED      = 1,
  D3DPOOL_SYSTEMMEM    = 2,
  D3DPOOL_SCRATCH      = 3,
  D3DPOOL_FORCE_DWORD  = 0x7fffffff
} D3DPOOL, *LPD3DPOOL;

Constantes

D3DPOOL_DEFAULT

Les ressources sont placées dans le pool de mémoire le plus approprié pour l’ensemble des utilisations demandées pour la ressource donnée. Il s’agit généralement de la mémoire vidéo, y compris la mémoire vidéo locale et la mémoire AGP. Le pool de D3DPOOL_DEFAULT est distinct de D3DPOOL_MANAGED et de D3DPOOL_SYSTEMMEM, et il spécifie que la ressource est placée dans la mémoire par défaut pour l’accès aux appareils. Notez que D3DPOOL_DEFAULT n’indique jamais que D3DPOOL_MANAGED ou D3DPOOL_SYSTEMMEM doit être choisi comme type de pool de mémoire pour cette ressource. Les textures placées dans le pool D3DPOOL_DEFAULT ne peuvent pas être verrouillées, sauf s’il s’agit de textures dynamiques ou de formats de pilote privés, FOURCC. Pour accéder aux textures déverrouillées, vous devez utiliser des fonctions telles que IDirect3DDevice9::UpdateSurface, IDirect3DDevice9::UpdateTexture, IDirect3DDevice9::GetFrontBufferData et IDirect3DDevice9::GetRenderTargetData. D3DPOOL_MANAGED est probablement un meilleur choix que D3DPOOL_DEFAULT pour la plupart des applications. Notez que certaines textures créées dans des formats de pixels propriétaires de pilote, inconnues du runtime Direct3D, peuvent être verrouillées. Notez également que, contrairement aux textures, les mémoires tampons d’arrière-mémoire de chaîne d’échange, les cibles de rendu, les mémoires tampons de vertex et les mémoires tampons d’index peuvent être verrouillées. Lorsqu’un appareil est perdu, les ressources créées à l’aide de D3DPOOL_DEFAULT doivent être libérées avant d’appeler IDirect3DDevice9::Reset. Pour plus d’informations, consultez Appareils perdus (Direct3D 9).

Lors de la création de ressources avec D3DPOOL_DEFAULT, si la mémoire de carte vidéo est déjà validée, les ressources managées sont supprimées pour libérer suffisamment de mémoire pour répondre à la demande.

D3DPOOL_MANAGED

Les ressources sont copiées automatiquement dans la mémoire accessible par l’appareil en fonction des besoins. Les ressources managées sont soutenues par la mémoire système et n’ont pas besoin d’être recréées en cas de perte d’un appareil. Pour plus d’informations, consultez Gestion des ressources (Direct3D 9). Les ressources managées peuvent être verrouillées. Seule la copie en mémoire système est directement modifiée. Direct3D copie vos modifications dans la mémoire accessible par le pilote en fonction des besoins.

Différences entre Direct3D 9 et Direct3D 9Ex :
D3DPOOL_MANAGED est valide avec IDirect3DDevice9 ; toutefois, elle n’est pas valide avec IDirect3DDevice9Ex.

 

D3DPOOL_SYSTEMMEM

Les ressources sont placées en mémoire qui n’est généralement pas accessible par l’appareil Direct3D. Cette allocation de mémoire consomme de la RAM système, mais ne réduit pas la RAM paginable. Ces ressources n’ont pas besoin d’être recréées lorsqu’un appareil est perdu. Les ressources de ce pool peuvent être verrouillées et peuvent être utilisées comme source pour une opération IDirect3DDevice9::UpdateSurface ou IDirect3DDevice9::UpdateTexture sur une ressource mémoire créée avec D3DPOOL_DEFAULT.

D3DPOOL_SCRATCH

Les ressources sont placées dans la RAM système et n’ont pas besoin d’être recréées en cas de perte d’un appareil. Ces ressources ne sont pas liées par des restrictions de taille ou de format d’appareil. Pour cette raison, ces ressources ne sont pas accessibles par l’appareil Direct3D, ni définies en tant que textures ou cibles de rendu. Toutefois, ces ressources peuvent toujours être créées, verrouillées et copiées.

D3DPOOL_FORCE_DWORD

Force cette énumération à compiler à une taille de 32 bits. Sans cette valeur, certains compilateurs autoriseraient cette énumération à compiler à une taille autre que 32 bits. Cette valeur n'est pas utilisée.

Remarques

Tous les types de pool sont valides avec toutes les ressources, notamment les tampons de vertex, les mémoires tampons d’index, les textures et les surfaces.

Les tableaux suivants indiquent des restrictions sur les types de pool pour les cibles de rendu, les gabarits de profondeur et les utilisations dynamiques et mipmap. Un x indique une combinaison compatible ; l’absence d’un x indique une incompatibilité.

pool D3DUSAGE_RENDERTARGET D3DUSAGE_DEPTHSTENCIL
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM

 

pool D3DUSAGE_DYNAMIC D3DUSAGE_AUTOGENMIPMAP
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED x
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM x

 

Pour plus d’informations sur les types d’utilisation, consultez D3DUSAGE.

Les pools ne peuvent pas être mélangés pour différents objets contenus dans une ressource (niveaux mip dans un mipmap) et, lorsqu’un pool est choisi, il ne peut pas être modifié.

Les applications doivent utiliser D3DPOOL_MANAGED pour la plupart des ressources statiques, car cela évite à l’application d’avoir à gérer les appareils perdus. (Les ressources managées sont restaurées par le runtime.) Cela est particulièrement avantageux pour les systèmes d’architecture de mémoire unifiée (UMA). Les autres ressources dynamiques ne correspondent pas bien à D3DPOOL_MANAGED. En fait, les mémoires tampons d’index et les mémoires tampons de vertex ne peuvent pas être créées à l’aide de D3DPOOL_MANAGED avec D3DUSAGE_DYNAMIC.

Pour les textures dynamiques, il est parfois souhaitable d’utiliser une paire de textures de mémoire vidéo et de mémoire système, en allouant la mémoire vidéo à l’aide de D3DPOOL_DEFAULT et la mémoire système à l’aide de D3DPOOL_SYSTEMMEM. Vous pouvez verrouiller et modifier les bits de la texture de mémoire système à l’aide d’une méthode de verrouillage. Vous pouvez ensuite mettre à jour la texture de la mémoire vidéo à l’aide de IDirect3DDevice9::UpdateTexture.

Spécifications

Condition requise Valeur
En-tête
D3D9Types.h

Voir aussi

Énumérations Direct3D

D3DUSAGE

IDirect3DDevice9::CreateCubeTexture

IDirect3DDevice9::CreateIndexBuffer

IDirect3DDevice9::CreateTexture

IDirect3DDevice9::CreateVolumeTexture

IDirect3DDevice9::CreateVertexBuffer

D3DINDEXBUFFER_DESC

D3DSURFACE_DESC

D3DVERTEXBUFFER_DESC

D3DVOLUME_DESC