Partager via


IDirect3D9 ::CheckDepthStencilMatch, méthode (d3d9helper.h)

Détermine si un format de gabarit de profondeur est compatible avec un format cible de rendu dans un mode d’affichage particulier.

Syntaxe

HRESULT CheckDepthStencilMatch(
  [in] UINT       Adapter,
  [in] D3DDEVTYPE DeviceType,
  [in] D3DFORMAT  AdapterFormat,
  [in] D3DFORMAT  RenderTargetFormat,
  [in] D3DFORMAT  DepthStencilFormat
);

Paramètres

[in] Adapter

Type : UINT

Nombre ordinal indiquant l’adaptateur d’affichage à interroger. D3DADAPTER_DEFAULT est toujours l’adaptateur d’affichage principal.

[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] RenderTargetFormat

Type : D3DFORMAT

Membre du D3DFORMAT type énuméré, identifiant le format de la surface cible de rendu à tester.

[in] DepthStencilFormat

Type : D3DFORMAT

Membre du D3DFORMAT type énuméré, identifiant le format de la surface de gabarit de profondeur à tester.

Valeur retournée

Type : HRESULT

Si le format de gabarit de profondeur est compatible avec le format cible de rendu en mode d’affichage, cette méthode retourne D3D_OK. D3DERR_INVALIDCALL peut être retourné si un ou plusieurs des paramètres n’est pas valide. Si un format de gabarit de profondeur n’est pas compatible avec la cible de rendu en mode d’affichage, cette méthode retourne D3DERR_NOTAVAILABLE.

Remarques

Cette méthode est fournie pour permettre aux applications de fonctionner avec du matériel nécessitant que certains formats de profondeur ne fonctionnent qu’avec certains formats cibles de rendu.

Le comportement de cette méthode a été modifié pour DirectX 8.1. Cette méthode porte désormais attention aux formats de gabarit de profondeur D24x8 et D32. La version précédente supposait que ces formats seraient toujours utilisables avec des cibles de rendu 32 ou 16 bits. Cette méthode retourne désormais D3D_OK pour ces formats uniquement si l’appareil est capable d’opérations de profondeur mixte.

Le fragment de code suivant montre comment utiliser CheckDeviceFormat pour valider un format de gabarit de profondeur.


BOOL IsDepthFormatOk(D3DFORMAT DepthFormat, 
                          D3DFORMAT AdapterFormat, 
                          D3DFORMAT BackBufferFormat)
{
    
    // Verify that the depth format exists
    HRESULT hr = pD3D->CheckDeviceFormat(D3DADAPTER_DEFAULT,
                                         D3DDEVTYPE_HAL,
                                         AdapterFormat,
                                         D3DUSAGE_DEPTHSTENCIL,
                                         D3DRTYPE_SURFACE,
                                         DepthFormat);
    
    if(FAILED(hr)) return FALSE;
    
    // Verify that the depth format is compatible
    hr = pD3D->CheckDepthStencilMatch(D3DADAPTER_DEFAULT,
                                      D3DDEVTYPE_HAL,
                                      AdapterFormat,
                                      BackBufferFormat,
                                      DepthFormat);
    
    return SUCCEEDED(hr);
    
}

L’appel précédent retourne FALSE si DepthFormat ne peut pas être utilisé conjointement avec AdapterFormat et BackBufferFormat.

Configuration requise

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

Voir aussi

IDirect3D9