Metodo IDirect3DDevice9::ValidateDevice (d3d9helper.h)
Segnala la possibilità del dispositivo di eseguire il rendering delle operazioni e degli argomenti correnti di fusione della trama in un singolo passaggio.
Sintassi
HRESULT ValidateDevice(
[out, retval] DWORD *pNumPasses
);
Parametri
[out, retval] pNumPasses
Tipo: DWORD*
Puntatore a un valore DWORD per riempire 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 è 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. Ad esempio, in uno scenario di texturing multistage, è possibile eseguire query sui membri MaxTextureBlendStages e MaxSimultaneousTextures di una struttura D3DCAPS9 per determinare se il texturing multistage è possibile nel dispositivo.
L'hardware corrente non implementa necessariamente tutte le possibili combinazioni di operazioni e argomenti. È possibile determinare se un'operazione di fusione specifica può essere eseguita con gli argomenti specificati impostando l'operazione di blending desiderata e quindi chiamando il metodo IDirect3DDevice9::ValidateDevice .
Il metodo IDirect3DDevice9::ValidateDevice usa gli stati di rendering, le trame e gli stati della trama correnti per eseguire la convalida al momento della chiamata. Le modifiche a questi fattori dopo la chiamata invalidano il risultato precedente e il metodo deve essere chiamato di nuovo prima di eseguire il rendering di una scena.
Per 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 iterazione solo all'ultima fase dell'operazione di trama.
Provare a specificare la trama (D3DTA_TEXTURE) per ogni fase come primo argomento anziché il secondo argomento.
Molte schede non supportano l'uso di valori diffusi o scalari in fasi di trama arbitrarie. Spesso, queste sono disponibili solo alla prima o all'ultima fase di fusione di trame.
Molte schede non hanno un'unità di fusione associata alla prima trama che è in grado di replicare alfa a canali di colore o invertire l'input. Pertanto, l'applicazione potrebbe dover usare solo la seconda fase di trama, se possibile. In tale hardware, la prima unità è presunta nello stato predefinito, che ha il primo argomento colore impostato su D3DTA_TEXTURE con l'operazione di D3DTOP_SELECTARG1.
Le operazioni sull'alfa di output più complesse o sostanzialmente diverse dalle operazioni di colore sono meno probabile che 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 filtro trilineare mipmapped. Se il filtro trilineare è stato richiesto per una trama coinvolta nelle operazioni di fusione multitexture e la convalida non riesce, disattivare il filtro trilineare e revalidate. In questo caso, è possibile eseguire invece il rendering multipass.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d9helper.h (include D3D9.h) |
Libreria | D3D9.lib |