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 |