Méthode IDirect3D9 ::CheckDeviceFormat (d3d9.h)

Détermine si un format de surface est disponible en tant que type de ressource spécifié et peut être utilisé comme texture, mémoire tampon profondeur-gabarit ou cible de rendu, ou toute combinaison des trois, sur un appareil représentant cet adaptateur.

Syntaxe

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

Paramètres

[in] Adapter

Type : UINT

Nombre ordinal indiquant l’adaptateur d’affichage à interroger. D3DADAPTER_DEFAULT est toujours la carte d’affichage principale. Cette méthode retourne D3DERR_INVALIDCALL lorsque cette valeur est égale ou supérieure au nombre de cartes graphiques dans le système.

[in] DeviceType

Type : D3DDEVTYPE

Membre du D3DDEVTYPE type énuméré, identifiant le type d’appareil.

[in] AdapterFormat

Type : D3DFORMAT

Membre du D3DFORMAT type énuméré, identifiant le format du mode d’affichage dans lequel l’adaptateur sera placé.

[in] Usage

Type : DWORD

Options d’utilisation demandées pour la surface. Les options d’utilisation sont une combinaison de constantes D3DUSAGE et D3DUSAGE_QUERY (seul un sous-ensemble des constantes D3DUSAGE est valide pour CheckDeviceFormat ; consultez le tableau de la page D3DUSAGE).

[in] RType

Type : D3DRESOURCETYPE

Type de ressource demandé pour une utilisation avec le format interrogé. Membre de D3DRESOURCETYPE.

[in] CheckFormat

Type : D3DFORMAT

Format des surfaces qui peuvent être utilisées, tel que défini par l’utilisation. Membre de D3DFORMAT.

Valeur retournée

Type : HRESULT

Si le format est compatible avec l’appareil spécifié pour l’utilisation demandée, cette méthode retourne D3D_OK.

D3DERR_INVALIDCALL est retourné si l’adaptateur est égal ou supérieur au nombre de cartes graphiques dans le système, ou si DeviceType n’est pas pris en charge.

D3DERR_NOTAVAILABLE est retourné si le format n’est pas acceptable pour l’appareil pour cette utilisation.

Remarques

Voici quelques exemples d’utilisation de CheckDeviceFormat pour case activée pour la prise en charge matérielle de :

  • Format de surface simple hors écran : spécifiez Utilisation = 0 et RType = D3DRTYPE_SURFACE.
  • Un format de gabarit de profondeur : l’extrait de code suivant teste la réussite au format profondeur-gabarit :
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    Pour plus d’informations sur le processus d’énumération, consultez Sélection d’un appareil (Direct3D 9).

  • Cette texture peut-elle être rendue dans un format particulier : étant donné le mode d’affichage actuel, cet exemple montre comment vérifier que le format de texture est compatible avec le format de mémoire tampon d’arrière-mémoire :
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • Fusion alpha dans un nuanceur de pixels : définissez Utilisation sur D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING. Attendez-vous à ce que cela échoue pour toutes les cibles de rendu à virgule flottante.
  • Génération automatique des mipmaps : définissez l’utilisation sur D3DUSAGE_AUTOGENMIPMAP. Si la génération automatique mipmap échoue, l’application obtient une texture non mipmapped. L’appel de cette méthode est considéré comme un indicateur. Cette méthode peut donc retourner D3DOK_NOAUTOGEN (un code de réussite valide) si la seule chose qui échoue est la génération mipmap. Pour plus d’informations sur la génération de mipmap, consultez Génération automatique de Mipmaps (Direct3D 9).
Lors de la migration du code de Direct3D 9 vers Direct3D 10, l’équivalent direct3D 10 de CheckDeviceFormat est CheckFormatSupport.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d9.h (inclure D3D9.h)
Bibliothèque D3D9.lib

Voir aussi

IDirect3D9