Condividi tramite


Metodo IDirect3DDevice9::ValidateDevice (d3d9.h)

Segnala la capacità del dispositivo di eseguire il rendering delle operazioni e degli argomenti correnti di fusione delle trame in un singolo passaggio.

Sintassi

HRESULT ValidateDevice(
  [out, retval] DWORD *pNumPasses
);

Parametri

[out, retval] pNumPasses

Tipo: DWORD*

Puntatore a un valore DWORD da riempire con il numero di passaggi di rendering necessari per completare l'effetto desiderato tramite il rendering multipass.

Valore restituito

Tipo: HRESULT

Se il metodo ha esito positivo, il valore restituito viene D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere uno dei seguenti: D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT, .

Commenti

Il metodo IDirect3DDevice9::ValidateDevice deve essere usato per convalidare gli scenari solo quando altre funzionalità sono carenti. In uno scenario di texturing a più livelli, ad esempio, è possibile eseguire una query sui membri MaxTextureBlendStages e MaxSimultaneousTextures di una struttura D3DCAPS9 per determinare se è possibile eseguire il texturing a più livelli nel dispositivo.

L'hardware corrente non implementa necessariamente tutte le possibili combinazioni di operazioni e argomenti. È possibile determinare se una particolare operazione di fusione può essere eseguita con determinati argomenti impostando l'operazione di fusione desiderata e quindi chiamando il metodo IDirect3DDevice9::ValidateDevice .

Il metodo IDirect3DDevice9::ValidateDevice usa gli stati di rendering, le trame e gli stati della fase trama correnti per eseguire la convalida al momento della chiamata. Le modifiche apportate a questi fattori dopo la chiamata invalidano il risultato precedente e il metodo deve essere chiamato nuovamente prima di eseguire il rendering di una scena.

Per ottenere prestazioni ottimali, chiamare IDirect3DDevice9::ValidateDevice in fase di inizializzazione; non usarlo all'interno di un ciclo di rendering.

L'uso di valori iterati diffusi, come argomento o come operazione (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) è raramente supportato nell'hardware corrente. La maggior parte dell'hardware può introdurre dati di colore iterati solo nell'ultima fase dell'operazione di trama.

Provare a specificare la trama (D3DTA_TEXTURE) per ogni fase come primo argomento, anziché come secondo argomento.

Molte schede non supportano l'uso di valori diffusi o scalari in fasi arbitrarie della trama. Spesso, questi sono disponibili solo nella prima o nell'ultima fase di fusione delle trame.

Molte schede non dispongono di un'unità di fusione associata alla prima trama in grado di replicare alfa in canali di colore o invertire l'input. Pertanto, l'applicazione potrebbe dover usare solo la seconda fase della trama, se possibile. In tale hardware, si presuppone che la prima unità sia nello stato predefinito, che ha il primo argomento colore impostato su D3DTA_TEXTURE con l'operazione di D3DTOP_SELECTARG1.

È meno probabile che le operazioni sull'output alfa più complesse o sostanzialmente diverse dalle operazioni sul colore siano supportate.

Alcuni hardware non supportano l'uso simultaneo di D3DTA_TFACTOR e D3DTA_DIFFUSE.

Molte schede non supportano l'uso simultaneo di più trame e il filtro trilineare applicato in modo non corretta. Se è stato richiesto un filtro trilineare per una trama coinvolta nelle operazioni di fusione multitexture e la convalida ha esito negativo, disattivare il filtro trilineare e riconvalidare. In questo caso, è consigliabile eseguire invece il rendering multipass.

Requisiti

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

Vedi anche

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState