Share via


LPD3DHAL_VALIDATETEXTURESTAGESTATECB funzione di callback (d3dhal.h)

La funzione D3dValidateTextureStageState restituisce il numero di passaggi in cui l'hardware può eseguire le operazioni di fusione specificate nello stato corrente.

Sintassi

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

Parametri

unnamedParam1

pvtssd [in]

Punta a una struttura D3DHAL_VALIDATETEXTURESTAGESTATEDATA che contiene le informazioni necessarie per il driver per determinare e restituire il numero di passaggi necessari per eseguire le operazioni di fusione.

Valore restituito

D3dValidateTextureStageState restituisce uno dei codici di callback seguenti:

Commenti

I driver Microsoft Direct3D che supportano il texturing devono implementare D3dValidateTextureStageState.

L'implementazione del driver di questa funzione deve valutare lo stato della trama corrente per tutte le fasi della trama associate al contesto. Se l'hardware del driver può eseguire le operazioni di fusione specificate, il driver deve restituire il numero di passaggi sui dati sullo stato richiesti dall'hardware. Se l'hardware non riesce a eseguire le operazioni di fusione specificate, il driver deve restituire uno dei codici di errore seguenti nel membro ddrval della struttura D3DHAL_VALIDATETEXTURESTAGESTATEDATA in pvtssd:

Codice di errore Significato
D3DERR_CONFLICTINGTEXTUREFILTER L'hardware non può eseguire contemporaneamente filtri trilineari e multitexturing.
D3DERR_TOOMANYOPERATIONS L'hardware non può gestire il numero specificato di operazioni.
D3DERR_UNSUPPORTEDALPHAARG L'hardware non supporta un argomento alfa specificato.
D3DERR_UNSUPPORTEDALPHAOPERATION L'hardware non supporta un'operazione alfa specificata.
D3DERR_UNSUPPORTEDCOLORARG L'hardware non supporta un argomento di colore specificato.
D3DERR_UNSUPPORTEDCOLOROPERATION L'hardware non supporta un'operazione di colore specificata.
D3DERR_UNSUPPORTEDFACTORVALUE L'hardware non supporta un D3DTA_TFACTOR maggiore di 1,0.
D3DERR_WRONGTEXTUREFORMAT L'hardware non supporta lo stato corrente nel formato trama selezionato.

 

Direct3D chiama D3dValidateTextureStageState in risposta a una richiesta di applicazione tramite una chiamata a IDirect3DDevice7::ValidateDevice. Il numero di passaggi restituiti dal driver viene propagato nuovamente all'applicazione, che può quindi decidere se procederà con il rendering usando lo stato corrente o se deve modificare le operazioni di fusione per eseguire il rendering più velocemente o per eseguire il rendering. Non esistono limiti al numero di passaggi che un driver può restituire.

Un driver che restituisce più di un passaggio è responsabile dell'esecuzione corretta dei passaggi su tutti i dati di stato e primitivi durante il rendering.

Le richieste che potrebbero non riuscire in D3dValidateTextureStageState:

  • L'uso di valori iterati diffusi come ARGs o l'operazione BLENDDIFFUSE è supportata in modo sparse nell'hardware corrente. Molte parti possono introdurre solo dati di colore iterazione nell'ultima fase dell'operazione di trama.

  • Tentativo di specificare la trama per ogni fase come arg1 in preferenza arg2.

  • Tentativo di usare valori diffusi o scalari in fasi di fusione multitexture arbitrarie. Per molte schede, questi valori possono essere usati solo allo stato finale di fusione della trama; per altri, solo alla prima fase.

  • Tentativo di eseguire più nella prima trama rispetto a replicare semplicemente alfa in canali di colore o invertire l'input. Per molte schede, le unità di fusione associate alla prima trama non sono in grado di gestire operazioni più complesse di queste. Gli esempi seguenti tentano di usare solo l'unità di fusione della seconda trama, se è possibile farlo. La prima unità si presuppone che sia nello stato predefinito negli esempi.

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • L'esecuzione di operazioni per l'alfa di output più complessa o sostanzialmente diversa da, le operazioni specificate per i canali di colore sono meno probabile che siano supportate.

  • Tentativo di usare D3DTA_TFACTOR e D3DTA_DIFFUSE contemporaneamente. Alcuni hardware non supportano questa operazione.

  • Tentativo di utilizzo simultaneo di più trame e filtro trilineare mappato MIP. Molte schede non supportano queste operazioni contemporaneamente. Se il filtro trilineare è stato richiesto per una trama coinvolta nelle operazioni multitexture e non riesce la convalida, disattivare trilineare e riprovare. In questo caso, potrebbe essere preferibile eseguire il rendering multipass.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione d3dhal.h (include D3dhal.h)

Vedi anche

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2