D3DDDIARG_STATESET-Struktur (d3dumddi.h)

Die D3DDDIARG_STATESET-Struktur beschreibt, wie ein Zustandsblock festgelegt wird.

Syntax

typedef struct _D3DDDIARG_STATESET {
  [in]     UINT              Operation;
  [in]     D3DSTATEBLOCKTYPE StateBlockType;
  [in/out] HANDLE            hStateSet;
} D3DDDIARG_STATESET;

Member

[in] Operation

Der auszuführende Vorgang, der einer der folgenden Werte sein kann.

Wert Bedeutung
D3DHAL_STATESETBEGIN Beginnen Sie den Zustandsblock, auf den vom Handle im hStateSet-Member verwiesen wird.
D3DHAL_STATESETCAPTURE Führen Sie die Erfassung aus. Wenn dieses Flag angegeben wird, muss der Treiber eine Momentaufnahme des aktuellen Zustands erfassen, die dem Zustandsblock entspricht, auf den das Handle in hStateSet verweist. Das heißt, nur der im Zustandsblock angegebene Zustand wird erfasst.
D3DHAL_STATESETCREATE Erstellen Sie einen Zustandsblock des Typs, der im StateBlockType-Element angegeben ist. Die informationen, die für jeden Zustandsblocktyp erfasst werden sollen, werden unter StateBlockType beschrieben.
D3DHAL_STATESETDELETE Löschen Sie den Zustandsblock, auf den vom Handle in hStateSet verwiesen wird.
D3DHAL_STATESETEND Beenden Sie den Zustandsblock, auf den vom Handle in hStateSet verwiesen wird.
D3DHAL_STATESETEXECUTE Führen Sie den Zustandsblock aus, auf den das Handle in hStateSet verweist.

[in] StateBlockType

Ein D3DSTATEBLOCKTYPE typisierter Wert, der den Typ des Zustands angibt, den der Treiber aufzeichnen soll. Dieser Member kann einer der folgenden Werte sein.

Wert Bedeutung
D3DSBT_ALL Der Treiber sollte den gesamten Zustand erfassen.
Wenn der Treiber aufgefordert wird, den gesamten Zustand im reinen Gerätemodus zu erfassen, sollte der Treiber den gesamten Zustand mit Ausnahme des aktuellen Vertexstreamzustands, des aktuellen Indexdatenstromzustands und der aktuell realisierten Texturen erfassen.
Der Treiber sollte den Viewport, alle Welttransformationen, die Ansichtstransformation, die Projektionstransformation, die Texturtransformation für alle Texturstufen, alle Benutzerclipebenen, das aktuelle Material, alle Lichter, die vor der Erstellung des Zustandsblocks verwendet wurden, den aktuellen Vertex-Shader-Ziehpunkt, den aktuellen Pixel-Shader-Handle, die aktuellen Vertex-Shader-Konstanten erfassen. und die aktuellen Pixel-Shader-Konstanten. Darüber hinaus sollte der Treiber die folgenden Render- und Texturphasenzustände erfassen: D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_WRAP7 D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_COLORWRITEENABLE D3DRS_TWEENFACTOR D3DRS_BLENDOP
Der Treiber sollte die folgenden Texturphasenzustände aufzeichnen:
D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ ALPHAARG0 D3DTSS_RESULTARG
D3DSBT_PIXELSTATE Der Treiber sollte nur den Pixelzustand erfassen.
Beim Erfassen des Pixelzustands im reinen Gerätemodus sollte der Treiber den aktuellen Pixelshaderhandle, die aktuellen Pixelshaderkonstanten und die folgenden Renderzustände und Texturphasenzustände im Zusammenhang mit der Pixelverarbeitung erfassen (d. a. aufzeichnen):
D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_ WRAP7-D3DRS_COLORWRITEENABLE D3DRS_BLENDOP D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_ TEXTURETRANSFORMFLAGS-D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ALPHAARG0 D3DTSS_RESULTARG
D3DSBT_VERTEXSTATE Der Treiber sollte nur den Vertexzustand erfassen.
Beim Erfassen des Vertexzustands im reinen Gerätemodus sollte der Treiber alle Lichter erfassen (aufzeichnen), die vor der Erstellung des Zustandsblocks verwendet wurden, das aktuelle Vertex-Shaderhandle, die aktuellen Vertex-Shaderkonstanten sowie die folgenden Renderzustände und Texturphasenzustände:
D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_TWEENFACTOR D3DTSS_TEXCOORDINDEX D3DTSS_TEXTURETRANSFORMFLAGS
NULL Es wird keine vordefinierte Zustandsgruppe angegeben.

[in/out] hStateSet

Ein Handle für den Zustandsblock, der von dem vorgang bearbeitet wird, der im Vorgangsmember angegeben ist.

Ein Zustandsblockhandle wird in einem Aufruf der StateSet-Funktion des Benutzermodusanzeigetreibers übergeben, wenn Operation auf D3DHAL_STATESETEXECUTE festgelegt ist.

Die StateSet-Funktion gibt das Zustandsblockhandle zurück, wenn Operation auf D3DHAL_STATESETBEGIN und D3DHAL_STATESETCREATE festgelegt ist.

Hinweise

Wenn der Anzeigetreiber für den Benutzermodus erweiterte Renderzustände implementiert (d. h. Renderzustände, die über die von der Microsoft Direct3D-Runtime bereitgestellten hinausgehen), verwendet der Treiber den StateBlockType-Member , um den Typ des verwendeten vordefinierten Renderzustands zu bestimmen. Anhand dieser Informationen kann der Treiber bestimmen, wie der Zustandsblock zur Unterstützung seiner Erweiterungen angemessen angefügt werden soll.

Das StateBlockType-Element ist nur für D3DHAL_STATESETBEGIN-, D3DHAL_STATESETEND- und D3DHAL_STATECREATE-Vorgänge gültig. Weitere Informationen zum D3DSTATEBLOCKTYPE-Enumerationstyp finden Sie in der Microsoft Windows SDK-Dokumentation.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

StateSet