Freigeben über


LPD3DHAL_VALIDATETEXTURESTAGESTATECB Rückruffunktion (d3dhal.h)

Die D3dValidateTextureStageState Funktion gibt die Anzahl der Durchläufe zurück, bei denen die Hardware die im aktuellen Zustand angegebenen Mischvorgänge ausführen kann.

Syntax

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

pvtssd [in]

Verweist auf eine D3DHAL_VALIDATETEXTURESTAGESTATEDATA Struktur, die die informationen enthält, die für den Treiber erforderlich sind, um die Anzahl der Übergeben zurückzugeben, die zum Ausführen der Vermischungsvorgänge erforderlich sind.

Rückgabewert

D3dValidateTextureStageState gibt einen der folgenden Rückrufcodes zurück:

Bemerkungen

Microsoft Direct3D-Treiber, die Texturing unterstützen, müssen D3dValidateTextureStageStateimplementieren.

Die Implementierung dieser Funktion des Treibers muss den aktuellen Texturzustand für alle Texturphasen auswerten, die dem Kontext zugeordnet sind. Wenn die Hardware des Treibers die angegebenen Mischvorgänge ausführen kann, sollte der Treiber die Anzahl der Übergeben der Zustandsdaten zurückgeben, die die Hardware benötigt. Wenn die Hardware die angegebenen Mischvorgänge nicht ausführen kann, sollte der Treiber einen der folgenden Fehlercodes im ddrval Member der D3DHAL_VALIDATETEXTURESTAGESTATEDATA Struktur bei pvtssdzurückgeben:

Fehlercode Bedeutung
D3DERR_CONFLICTINGTEXTUREFILTER Die Hardware kann nicht gleichzeitig trilineare Filterung und Multitexturing ausführen.
D3DERR_TOOMANYOPERATIONS Die Hardware kann die angegebene Anzahl von Vorgängen nicht verarbeiten.
D3DERR_UNSUPPORTEDALPHAARG Die Hardware unterstützt kein angegebenes Alphaargument.
D3DERR_UNSUPPORTEDALPHAOPERATION Die Hardware unterstützt keinen angegebenen Alpha-Vorgang.
D3DERR_UNSUPPORTEDCOLORARG Die Hardware unterstützt kein angegebenes Farbargument.
D3DERR_UNSUPPORTEDCOLOROPERATION Die Hardware unterstützt keinen angegebenen Farbvorgang.
D3DERR_UNSUPPORTEDFACTORVALUE Die Hardware unterstützt keine D3DTA_TFACTOR größer als 1.0.
D3DERR_WRONGTEXTUREFORMAT Die Hardware unterstützt den aktuellen Zustand im ausgewählten Texturformat nicht.

 

Direct3D ruft D3dValidateTextureStageState als Reaktion auf eine Anwendungsanforderung über einen Aufruf von IDirect3DDevice7::ValidateDeviceauf. Die Anzahl der vom Treiber zurückgegebenen Übergänge wird zurück an die Anwendung weitergegeben, was dann entscheiden kann, ob das Rendern mit dem aktuellen Zustand fortgesetzt wird oder ob die Vermischungsvorgänge geändert werden müssen, um schneller oder überhaupt gerendert zu werden. Es gibt keine Grenzen für die Anzahl der Durchläufe, die ein Treiber zurückgeben kann.

Ein Treiber, der mehr als einen Durchlauf zurückgibt, ist für die ordnungsgemäße Ausführung aller Zustands- und Grundtypdaten beim Rendern verantwortlich.

Anforderungen, die wahrscheinlich fehlschlagen D3dValidateTextureStageState:

  • Die Verwendung diffuser iterierter Werte als ARGs oder der BLENDDIFFUSE-Vorgang wird auf der aktuellen Hardware nur wenig unterstützt. Viele Teile können nur iterierte Farbdaten in der letzten Texturvorgangsphase einführen.

  • Versuchen Sie, die Textur für jede Phase als arg1 in der Voreinstellung von Arg2 anzugeben.

  • Es wird versucht, diffuse oder skalare Werte in beliebigen Multitexture-Mischphasen zu verwenden. Bei vielen Karten können diese Werte nur im endgültigen Texturmischungszustand verwendet werden. für andere, nur in der ersten Phase.

  • Es wird versucht, mehr in der ersten Textur zu tun, als nur Alpha in Farbkanäle zu replizieren oder die Eingabe umzukehren. Bei vielen Karten sind die mit der ersten Textur verbundenen Mischeinheiten in der Lage, Vorgänge komplexer zu behandeln als diese. Die folgenden Beispiele versuchen, nur die Blendungseinheit der zweiten Textur zu verwenden, falls dies möglich ist. Die erste Einheit wird davon ausgegangen, dass sie sich in den Beispielen im Standardzustand befindet.

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • Das Ausführen von Vorgängen für das Ausgabe-Alpha, das komplizierter ist als oder wesentlich von den vorgängen, die für die Farbkanäle angegeben wurden, ist weniger wahrscheinlich unterstützt.

  • Es wird versucht, D3DTA_TFACTOR und gleichzeitig D3DTA_DIFFUSE zu verwenden. Einige Hardware unterstützt dies nicht.

  • Es wird versucht, mehrere Texturen und die MIP-zugeordnete Trilinearfilterung gleichzeitig zu verwenden. Viele Karten unterstützen diese Vorgänge nicht gleichzeitig. Wenn die Trilinearfilterung für eine Textur angefordert wurde, die an multitexture-Vorgängen beteiligt ist und die Validierung fehlschlägt, deaktivieren Sie trilinear, und versuchen Sie es erneut. In diesem Fall kann es am besten sein, stattdessen multipass-Rendering auszuführen.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- d3dhal.h (einschließlich D3dhal.h)

Siehe auch

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2