Condividi tramite


Metodo IDirect3D9::CheckDepthStencilMatch (d3d9helper.h)

Determina se un formato depth-stencil è compatibile con un formato di destinazione di rendering in una particolare modalità di visualizzazione.

Sintassi

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

Parametri

[in] Adapter

Tipo: UINT

Numero ordinale che indica l'adattatore di visualizzazione su cui eseguire la query. D3DADAPTER_DEFAULT è sempre la scheda di visualizzazione primaria.

[in] DeviceType

Tipo: D3DDEVTYPE

Membro del tipo enumerato D3DDEVTYPE , identificando il tipo di dispositivo.

[in] AdapterFormat

Tipo: D3DFORMAT

Membro del D3DFORMAT tipo enumerato, identificando il formato della modalità di visualizzazione in cui verrà posizionato l'adattatore.

[in] RenderTargetFormat

Tipo: D3DFORMAT

Membro del D3DFORMAT tipo enumerato, che identifica il formato della superficie di destinazione di rendering da testare.

[in] DepthStencilFormat

Tipo: D3DFORMAT

Membro del D3DFORMAT tipo enumerato, che identifica il formato della superficie depth-stencil da testare.

Valore restituito

Tipo: HRESULT

Se il formato depth-stencil è compatibile con il formato di destinazione di rendering nella modalità di visualizzazione, questo metodo restituisce D3D_OK. D3DERR_INVALIDCALL può essere restituito se uno o più parametri non sono validi. Se un formato depth-stencil non è compatibile con la destinazione di rendering in modalità di visualizzazione, questo metodo restituisce D3DERR_NOTAVAILABLE.

Commenti

Questo metodo viene fornito per consentire alle applicazioni di lavorare con l'hardware che richiede che determinati formati di profondità possano funzionare solo con determinati formati di destinazione di rendering.

Il comportamento di questo metodo è stato modificato per DirectX 8.1. Questo metodo ora presta attenzione ai formati D24x8 e D32 depth-stencil. La versione precedente presuppone che questi formati siano sempre utilizzabili con destinazioni di rendering a 32 o 16 bit. Questo metodo restituirà ora D3D_OK per questi formati solo se il dispositivo è in grado di eseguire operazioni di profondità mista.

Il frammento di codice seguente illustra come usare CheckDeviceFormat per convalidare un formato depth stencil.


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);
    
}

La chiamata precedente restituirà FALSE se DepthFormat non può essere utilizzato in combinazione con AdapterFormat e BackBufferFormat.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9helper.h (include D3D9.h)
Libreria D3D9.lib

Vedi anche

IDirect3D9