Compartilhar via


Método IDirect3D9::CheckDeviceType (d3d9helper.h)

Verifica se um tipo de dispositivo acelerado por hardware pode ser usado nesse adaptador.

Sintaxe

HRESULT CheckDeviceType(
       UINT       iAdapter,
  [in] D3DDEVTYPE DevType,
       D3DFORMAT  DisplayFormat,
  [in] D3DFORMAT  BackBufferFormat,
  [in] BOOL       bWindowed
);

Parâmetros

iAdapter

Tipo: UINT

Número ordinal que indica o adaptador de exibição para enumerar. 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] DevType

Tipo: D3DDEVTYPE

Membro do D3DDEVTYPE tipo enumerado, indicando o tipo de dispositivo a ser marcar.

DisplayFormat

Tipo: D3DFORMAT

Membro do D3DFORMAT tipo enumerado, indicando o formato do modo de exibição do adaptador para o qual o tipo de dispositivo deve ser verificado. Por exemplo, alguns dispositivos funcionarão apenas em modos de 16 bits por pixel.

[in] BackBufferFormat

Tipo: D3DFORMAT

Formato de buffer de fundo. Para obter mais informações sobre formatos, consulte D3DFORMAT. Esse valor deve ser um dos formatos de destino de renderização. Você pode usar GetAdapterDisplayMode para obter o formato atual.

Para aplicativos em janelas, o formato de buffer de fundo não precisará corresponder ao formato do modo de exibição se o hardware der suporte à conversão de cores. O conjunto de possíveis formatos de buffer de fundo é restrito, mas o runtime permitirá que qualquer formato de buffer de fundo válido seja apresentado a qualquer formato de área de trabalho. Há o requisito adicional de que o dispositivo seja operável na área de trabalho porque os dispositivos normalmente não operam em modos de 8 bits por pixel.

Aplicativos de tela inteira não podem fazer conversão de cores.

D3DFMT_UNKNOWN é permitido para o modo em janelas.

[in] bWindowed

Tipo: BOOL

Valor que indica se o tipo de dispositivo será usado no modo de tela inteira ou janela. Se definido como TRUE, a consulta será executada para aplicativos em janelas; caso contrário, esse valor deve ser definido como FALSE.

Retornar valor

Tipo: HRESULT

Se o dispositivo puder ser usado nesse adaptador, D3D_OK será retornado.

D3DERR_INVALIDCALL será retornado se o Adaptador for igual ou exceder o número de adaptadores de vídeo no sistema. D3DERR_INVALIDCALL também será retornado se CheckDeviceType especificar um dispositivo que não existe.

D3DERR_NOTAVAILABLE será retornado se não houver suporte para o formato de buffer de retorno solicitado ou se a aceleração de hardware não estiver disponível para os formatos especificados.

Comentários

Um tipo de dispositivo hal requer aceleração de hardware. Os aplicativos podem usar CheckDeviceType para determinar se o hardware e os drivers necessários estão presentes para dar suporte a um dispositivo hal.

Aplicativos de tela inteira não devem especificar um DisplayFormat que contenha um canal alfa. Isso resultará em uma chamada com falha. Observe que um canal alfa pode estar presente no buffer de fundo, mas os dois formatos de exibição devem ser idênticos em todos os outros aspectos. Por exemplo, se DisplayFormat = D3DFMT_X1R5G5B5, os valores válidos para BackBufferFormat incluirão D3DFMT_X1R5G5B5 e D3DFMT_A1R5G5B5, mas excluir D3DFMT_R5G6B5.

O fragmento de código a seguir mostra como você pode usar CheckDeviceType para testar se um determinado tipo de dispositivo pode ser usado nesse adaptador.


if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, 
                                        D3DDEVTYPE_HAL, 
                                        DisplayFormat, 
                                        BackBufferFormat, 
                                        bIsWindowed)))
    
     return S_OK;
// There is no HAL on this adapter using this render-target format. 
// Try again, using another format.

Esse código retornará S_OK se o dispositivo puder ser usado no adaptador padrão com o formato de superfície especificado.

O uso de CheckDeviceType para testar a compatibilidade entre um buffer de fundo diferente do formato de exibição retornará os valores apropriados. Isso significa que a chamada refletirá os recursos do dispositivo. Se o dispositivo não puder renderizar para o formato de buffer de fundo solicitado, a chamada ainda retornará D3DERR_NOTAVAILABLE. Se o dispositivo puder renderizar para o formato, mas não puder executar a apresentação de conversão de cores, o valor retornado também será D3DERR_NOTAVAILABLE. Os aplicativos podem descobrir o suporte de hardware para a apresentação em si chamando CheckDeviceFormatConversion. Nenhuma emulação de software para a apresentação de conversão de cores em si será oferecida.

Requisitos

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

Confira também

IDirect3D9