Condividi tramite


Metodo IDirect3D9::CheckDeviceFormat (d3d9.h)

Determina se un formato di superficie è disponibile come tipo di risorsa specificato e può essere usato come trama, buffer depth-stencil o destinazione di rendering o qualsiasi combinazione dei tre, in un dispositivo che rappresenta questa scheda.

Sintassi

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

Parametri

[in] Adapter

Tipo: UINT

Numero ordinale che indica l'adattatore di visualizzazione su cui eseguire la query. D3DADAPTER_DEFAULT è sempre la scheda di visualizzazione primaria. Questo metodo restituisce D3DERR_INVALIDCALL quando questo valore è uguale o supera il numero di schede di visualizzazione nel sistema.

[in] DeviceType

Tipo: D3DDEVTYPE

Membro del tipo enumerato D3DDEVTYPE , identificando il tipo di dispositivo.

[in] AdapterFormat

Tipo: D3DFORMAT

Membro del D3DFORMAT tipo enumerato, identificando il formato della modalità di visualizzazione in cui verrà posizionato l'adattatore.

[in] Usage

Tipo: DWORD

Opzioni di utilizzo richieste per la superficie. Le opzioni di utilizzo sono qualsiasi combinazione di costanti D3DUSAGE e D3DUSAGE_QUERY (solo un subset delle costanti D3DUSAGE sono valide per CheckDeviceFormat; vedere la tabella nella pagina D3DUSAGE).

[in] RType

Tipo: D3DRESOURCETYPE

Tipo di risorsa richiesto per l'uso con il formato sottoposto a query. Membro di D3DRESOURCETYPE.

[in] CheckFormat

Tipo: D3DFORMAT

Formato delle superfici che possono essere utilizzate, come definito dall'utilizzo. Membro di D3DFORMAT.

Valore restituito

Tipo: HRESULT

Se il formato è compatibile con il dispositivo specificato per l'utilizzo richiesto, questo metodo restituisce D3D_OK.

D3DERR_INVALIDCALL viene restituito se Adapter è uguale o supera il numero di schede di visualizzazione nel sistema o se DeviceType non è supportato.

D3DERR_NOTAVAILABLE viene restituito se il formato non è accettabile per il dispositivo per questo utilizzo.

Commenti

Ecco alcuni esempi che usano CheckDeviceFormat per verificare il supporto hardware di:

  • Formato superficie normale fuori schermo : specificare Usage = 0 e RType = D3DRTYPE_SURFACE.
  • Formato depth-stencil: il frammento di codice seguente verifica il formato depth-stencil superato:
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    Per altri dettagli sul processo di enumerazione, vedere Selezione di un dispositivo (Direct3D 9 ).

  • È possibile eseguire il rendering di questa trama in un formato specifico- Data la modalità di visualizzazione corrente, in questo esempio viene illustrato come verificare che il formato della trama sia compatibile con il formato back-buffer specifico:
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • Fusione alfa in un pixel shader: impostare Utilizzo su D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING. Si prevede che questa operazione non riesca per tutte le destinazioni di rendering a virgola mobile.
  • Generazione automatica di mipmap: impostare Utilizzo su D3DUSAGE_AUTOGENMIPMAP. Se la generazione automatica mipmap ha esito negativo, l'applicazione otterrà una trama non mipmapped. La chiamata a questo metodo è considerata un hint, quindi questo metodo può restituire D3DOK_NOAUTOGEN (codice di esito positivo valido) se l'unica cosa che ha esito negativo è la generazione mipmap. Per altre informazioni sulla generazione di mipmap, vedere Generazione automatica di Mipmaps (Direct3D 9).For more information about mipmap generation, see Automatic Generation of Mipmaps (Direct3D 9).
Quando si esegue la migrazione del codice da Direct3D 9 a Direct3D 10, Direct3D 10 equivalente a CheckDeviceFormat è CheckFormatSupport.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9.h (include D3D9.h)
Libreria D3D9.lib

Vedi anche

IDirect3D9