Método IDirect3D9::CheckDeviceFormat (d3d9.h)

Determina se um formato de superfície está disponível como um tipo de recurso especificado e pode ser usado como uma textura, buffer de estêncil de profundidade ou destino de renderização, ou qualquer combinação dos três, em um dispositivo que representa esse adaptador.

Sintaxe

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

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. Esse método retorna D3DERR_INVALIDCALL quando esse valor é igual ou excede o número de adaptadores de exibição no sistema.

[in] DeviceType

Tipo: D3DDEVTYPE

Membro do D3DDEVTYPE tipo enumerado, identificando o tipo de dispositivo.

[in] AdapterFormat

Tipo: D3DFORMAT

Membro do D3DFORMAT tipo enumerado, identificando o formato do modo de exibição no qual o adaptador será colocado.

[in] Usage

Tipo: DWORD

Opções de uso solicitadas para a superfície. As opções de uso são qualquer combinação de constantes D3DUSAGE e D3DUSAGE_QUERY (somente um subconjunto das constantes D3DUSAGE são válidas para CheckDeviceFormat; consulte a tabela na página D3DUSAGE).

[in] RType

Tipo: D3DRESOURCETYPE

Tipo de recurso solicitado para uso com o formato consultado. Membro do D3DRESOURCETYPE.

[in] CheckFormat

Tipo: D3DFORMAT

Formato das superfícies que podem ser usadas, conforme definido por Uso. Membro do D3DFORMAT.

Retornar valor

Tipo: HRESULT

Se o formato for compatível com o dispositivo especificado para o uso solicitado, esse método retornará D3D_OK.

D3DERR_INVALIDCALL será retornado se o Adaptador for igual ou exceder o número de adaptadores de vídeo no sistema ou se DeviceType não tiver suporte.

D3DERR_NOTAVAILABLE será retornado se o formato não for aceitável para o dispositivo para esse uso.

Comentários

Aqui estão alguns exemplos usando CheckDeviceFormat para marcar para suporte de hardware de:

  • Um formato de superfície simples fora da tela – especifique Uso = 0 e RType = D3DRTYPE_SURFACE.
  • Um formato de estêncil de profundidade – o snippet de código a seguir testa o formato de estêncil de profundidade passado:
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    Consulte Selecionar um dispositivo (Direct3D 9) para obter mais detalhes sobre o processo de enumeração.

  • Essa textura pode ser renderizada em um formato específico – Considerando o modo de exibição atual, este exemplo mostra como verificar se o formato de textura é compatível com o formato de buffer de fundo específico:
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • Mesclagem alfa em um sombreador de pixel – defina Uso como D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING. Espere que isso falhe para todos os destinos de renderização de ponto flutuante.
  • Geração automática de mipmaps – defina Uso como D3DUSAGE_AUTOGENMIPMAP. Se a geração automática de mipmap falhar, o aplicativo obterá uma textura não mipmapped. Chamar esse método é considerado uma dica, portanto, esse método pode retornar D3DOK_NOAUTOGEN (um código de êxito válido) se a única coisa que falha for a geração de mipmap. Para obter mais informações sobre a geração de mipmap, consulte Geração automática de Mipmaps (Direct3D 9).
Ao migrar o código do Direct3D 9 para o Direct3D 10, o direct3D 10 equivalente a CheckDeviceFormat é CheckFormatSupport.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d9.h (inclua D3D9.h)
Biblioteca D3D9.lib

Confira também

IDirect3D9