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).
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d9.h (inclua D3D9.h) |
Biblioteca | D3D9.lib |