Share via


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

Vedi anche

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState