LPD3DHAL_VALIDATETEXTURESTAGESTATECB Rückruffunktion (d3dhal.h)

Die D3dValidateTextureStageState-Funktion gibt die Anzahl von Durchläufen zurück, in 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 der Treiber benötigt, um die Anzahl von Durchläufen zu bestimmen und zurückzugeben, die zum Ausführen der Füllvorgänge erforderlich sind.

Rückgabewert

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

Hinweise

Microsoft Direct3D-Treiber, die Texturierung unterstützen, müssen D3dValidateTextureStageState implementieren.

Die Implementierung dieser Funktion durch den Treiber muss den aktuellen Texturzustand für alle dem Kontext zugeordneten Texturphasen auswerten. Wenn die Hardware des Treibers die angegebenen Mischvorgänge ausführen kann, sollte der Treiber die Anzahl von Durchläufen für die Zustandsdaten zurückgeben, die seine 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 pvtssd zurückgeben:

Fehlercode Bedeutung
D3DERR_CONFLICTINGTEXTUREFILTER Die Hardware kann nicht sowohl trilineare Filterung als auch Multitexturing gleichzeitig 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 Alphavorgang.
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 Antwort auf eine Anwendungsanforderung über einen Aufruf von IDirect3DDevice7::ValidateDevice auf. Die Anzahl der vom Treiber zurückgegebenen Durchläufe wird an die Anwendung zurückverbreitet, die dann entscheiden kann, ob das Rendern mit dem aktuellen Zustand fortgesetzt wird oder ob die Füllvorgänge geändert werden müssen, um schneller oder überhaupt gerendert zu werden. Es gibt keine Grenzen für die Anzahl von Durchläufen, die ein Treiber zurückgeben kann.

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

Anforderungen, bei denen D3dValidateTextureStageState wahrscheinlich fehlschlägt:

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

  • Versuchen Sie, die Textur für jede Phase als arg1 anzugeben, bevor sie arg2 ist.

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

  • Der Versuch, in der ersten Textur mehr zu tun, als nur Alpha in Farbkanäle zu replizieren oder die Eingabe umzukehren. Bei vielen Karten sind die Mit der ersten Textur zugeordneten Mischeinheiten nicht in der Lage, komplexere Vorgänge als diese zu verarbeiten. In den folgenden Beispielen wird versucht, nur die Mischeinheit der zweiten Textur zu verwenden, sofern dies möglich ist. Es wird davon ausgegangen, dass sich die erste Einheit 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 die Ausgabe-Alpha, die komplexer sind oder sich wesentlich von den für die Farbkanäle angegebenen Vorgängen unterscheiden, wird weniger wahrscheinlich unterstützt.

  • Der Versuch, D3DTA_TFACTOR und D3DTA_DIFFUSE gleichzeitig zu verwenden. Einige Hardware unterstützt dies nicht.

  • Versuch der gleichzeitigen Verwendung mehrerer Texturen und MIP zugeordneter trilinearer Filterung. Viele Karten unterstützen diese Vorgänge nicht gleichzeitig. Wenn die trilineare Filterung für eine Textur angefordert wurde, die an Multitexturvorgängen beteiligt ist und die Überprüfung fehlschlägt, deaktivieren Sie trilinear, und versuchen Sie es erneut. In diesem Fall kann es am besten sein, stattdessen mehrstufiges Rendering auszuführen.

Anforderungen

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

Weitere Informationen

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2