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).
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d9.h (inclure D3D9.h) |
Bibliothèque | D3D9.lib |