Método IDirect3D9::CheckDepthStencilMatch (d3d9.h)
Determina se um formato de estêncil de profundidade é compatível com um formato de destino de renderização em um modo de exibição específico.
Sintaxe
HRESULT CheckDepthStencilMatch(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] D3DFORMAT AdapterFormat,
[in] D3DFORMAT RenderTargetFormat,
[in] D3DFORMAT DepthStencilFormat
);
Parâmetros
[in] Adapter
Tipo: UINT
Número ordinal que indica o adaptador de exibição para consulta. D3DADAPTER_DEFAULT é sempre o adaptador de exibição primário.
[in] DeviceType
Tipo: D3DDEVTYPE
Membro do tipo enumerado D3DDEVTYPE , identificando o tipo de dispositivo.
[in] AdapterFormat
Tipo: D3DFORMAT
Membro do tipo enumerado D3DFORMAT , identificando o formato do modo de exibição no qual o adaptador será colocado.
[in] RenderTargetFormat
Tipo: D3DFORMAT
Membro do tipo enumerado D3DFORMAT , identificando o formato da superfície de destino de renderização a ser testada.
[in] DepthStencilFormat
Tipo: D3DFORMAT
Membro do tipo enumerado D3DFORMAT , identificando o formato da superfície de estêncil de profundidade a ser testada.
Valor retornado
Tipo: HRESULT
Se o formato de estêncil de profundidade for compatível com o formato render-target no modo de exibição, esse método retornará D3D_OK. D3DERR_INVALIDCALL poderá ser retornado se um ou mais dos parâmetros forem inválidos. Se um formato de estêncil de profundidade não for compatível com o destino de renderização no modo de exibição, esse método retornará D3DERR_NOTAVAILABLE.
Comentários
Esse método é fornecido para permitir que os aplicativos funcionem com hardware, exigindo que determinados formatos de profundidade só possam funcionar com determinados formatos de destino de renderização.
O comportamento desse método foi alterado para o DirectX 8.1. Esse método agora presta atenção aos formatos de estêncil de profundidade D24x8 e D32. A versão anterior presumia que esses formatos sempre seriam utilizáveis com destinos de renderização de 32 ou 16 bits. Agora, esse método retornará D3D_OK para esses formatos somente se o dispositivo for capaz de operações de profundidade mista.
O fragmento de código a seguir mostra como você pode usar CheckDeviceFormat para validar um formato de estêncil de profundidade.
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);
}
A chamada anterior retornará FALSE se DepthFormat não puder ser usado em conjunto com AdapterFormat e BackBufferFormat.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | d3d9.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |