Freigeben über


IDirect3DDevice9::ValidateDevice-Methode (d3d9.h)

Meldet die Fähigkeit des Geräts, die aktuellen Texturmischungsvorgänge und -argumente in einem einzigen Durchlauf zu rendern.

Syntax

HRESULT ValidateDevice(
  [out, retval] DWORD *pNumPasses
);

Parameter

[out, retval] pNumPasses

Typ: DWORD*

Zeiger auf einen DWORD-Wert, der mit der Anzahl von Renderingdurchläufen gefüllt werden soll, die erforderlich sind, um den gewünschten Effekt durch multipassiges Rendering abzuschließen.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert wie folgt aussehen: D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT.

Hinweise

Die IDirect3DDevice9::ValidateDevice-Methode sollte nur verwendet werden, um Szenarien zu überprüfen, wenn andere Funktionen unzureichend sind. In einem mehrstufigen Texturierungsszenario können Sie beispielsweise die Elemente MaxTextureBlendStages und MaxSimultaneousTextures einer D3DCAPS9-Struktur abfragen, um zu bestimmen, ob mehrstufige Texturierung auf dem Gerät möglich ist.

Die aktuelle Hardware implementiert nicht unbedingt alle möglichen Kombinationen von Vorgängen und Argumenten. Sie können bestimmen, ob ein bestimmter Mischvorgang mit angegebenen Argumenten ausgeführt werden kann, indem Sie den gewünschten Mischvorgang festlegen und dann die IDirect3DDevice9::ValidateDevice-Methode aufrufen.

Die IDirect3DDevice9::ValidateDevice-Methode verwendet die aktuellen Renderzustände, Texturen und Texturphasenzustände, um zum Zeitpunkt des Aufrufs eine Überprüfung durchzuführen. Änderungen an diesen Faktoren, nachdem der Aufruf das vorherige Ergebnis ungültig macht, und die -Methode muss erneut aufgerufen werden, bevor eine Szene gerendert wird.

Um eine optimale Leistung zu erzielen, rufen Sie zum Initialisierungszeitpunkt IDirect3DDevice9::ValidateDevice auf. verwenden Sie es nicht innerhalb einer Renderschleife.

Die Verwendung diffuser iterierter Werte, entweder als Argument oder als Vorgang (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA), wird auf der aktuellen Hardware selten unterstützt. Die meisten Hardwaredaten können nur in der letzten Texturvorgangsphase iterierte Farbdaten einführen.

Versuchen Sie, die Textur (D3DTA_TEXTURE) für jede Phase als erstes Argument und nicht als zweites Argument anzugeben.

Viele Karten unterstützen die Verwendung von diffusen oder skalaren Werten in beliebigen Texturphasen nicht. Häufig sind diese nur in der ersten oder letzten Texturmischungsphase verfügbar.

Viele Karten verfügen nicht über eine Mischeinheit, die der ersten Textur zugeordnet ist, die mehr kann, als alpha in Farbkanäle zu replizieren oder die Eingabe umzukehren. Daher muss Ihre Anwendung ggf. nur die zweite Texturphase verwenden. Auf einer solchen Hardware wird davon ausgegangen, dass sich die erste Einheit im Standardzustand befindet, wobei das erste Farbargument mit dem D3DTOP_SELECTARG1-Vorgang auf D3DTA_TEXTURE festgelegt ist.

Vorgänge für das Ausgabe alpha, die komplizierter sind oder sich wesentlich von den Farbvorgängen unterscheiden, werden mit geringerer Wahrscheinlichkeit unterstützt.

Einige Hardware unterstützt nicht die gleichzeitige Verwendung von D3DTA_TFACTOR und D3DTA_DIFFUSE.

Viele Karten unterstützen nicht die gleichzeitige Verwendung mehrerer Texturen und der mipmappenbasierten trilinearen Filterung. Wenn die trilineare Filterung für eine Textur angefordert wurde, die an Multitexturmischungsvorgängen beteiligt ist und die Überprüfung fehlschlägt, deaktivieren Sie die trilineare Filterung und überprüfung. In diesem Fall sollten Sie stattdessen ein Rendering mit mehreren Pässen durchführen.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3DDevice9

IDirect3DDevice9::GetTextureStageState

IDirect3DDevice9::SetTextureStageState