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

Confira também

IDirect3D9