Freigeben über


D3DHAL_DP2STATESET Struktur (d3dhal.h)

Die D3DHAL_DP2STATESET-Struktur wird verwendet, um den Treiber über die auszuführenden Statussatzvorgänge zu informieren.

Syntax

typedef struct _D3DHAL_DP2STATESET {
  DWORD             dwOperation;
  DWORD             dwParam;
  D3DSTATEBLOCKTYPE sbType;
} D3DHAL_DP2STATESET;

Angehörige

dwOperation

Gibt den auszuführenden Vorgang an. Der Wert dieses Elements kann eine der folgenden Sein:

Wert Bedeutung
D3DHAL_STATESETBEGIN Gibt den Anfang des Statesets an, auf das von dwParam verwiesen wird.
D3DHAL_STATESETCAPTURE Gibt an, dass die Erfassung erfolgen soll. Wenn dieses Flag angegeben ist, muss der Treiber eine Momentaufnahme des aktuellen Zustands erfassen, der mit dem Zustandsblock übereinstimmt, auf den durch das in dwParam übergebene Handle verwiesen wird. Das heißt, nur der Zustand, der im Statusblock angegeben ist, wird erfasst. Wichtige Details zur Zustandserfassung finden Sie unter Beschleunigte Zustandsverwaltung.
D3DHAL_STATESETCREATE Nur DirectX 8.0 und höhere Versionen.
Nach Erhalt dieser Anforderung sollte der Treiber einen Statusblock des Typs erstellen, der im Feld sbType angegeben ist. Die Informationen, die für jeden Zustandsblocktyp erfasst werden sollen, werden unten beschrieben.
D3DHAL_STATESETDELETE Gibt an, dass das von dwParam referenzierte Stateset gelöscht werden soll.
D3DHAL_STATESETEND Gibt das Ende des Statesets an, auf das von dwParam verwiesen wird.
D3DHAL_STATESETEXECUTE Gibt an, dass das von dwParam referenzierte Stateset ausgeführt werden soll.

dwParam

Gibt das Stateset-Handle an, das auf den zustandsblock verweist, der mit dem aktuellen dwOperationbearbeitet wird.

sbType

Gibt den Statusblocktyp an. Der Treiber sollte dieses Element ignorieren, es sei denn, er implementiert Renderstatuserweiterungen oder implementiert Unterstützung für reine Geräte (nur DirectX 8.0 und höhere Versionen).

Wenn der Treiber erweiterte Renderzustände implementiert, d. h. Renderzustände, die über die Direct3D-Runtime-Lieferungen hinausgehen, kann er sbType- verwenden, um zu bestimmen, welche Typen von vordefinierten Renderzuständen verwendet werden. Anhand dieser Informationen kann der Treiber bestimmen, wie der Zustandsblock entsprechend angefügt wird, um seine Erweiterungen zu unterstützen.

Der sbType-Member, der nur für D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND und D3DHAL_STATECREATE gültig ist, gibt den Statusblocktyp mit einem der folgenden D3DSTATEBLOCKTYPE Aufzählungstypen an. Weitere Informationen finden Sie in der DirectX SDK-Dokumentation.

D3DSBT_ALL

Signalisiert den Treiber, den gesamten Zustand zu erfassen.

Wenn sie aufgefordert werden, den gesamten Zustand im reinen Gerätemodus zu erfassen, sollte der Treiber den gesamten Zustand mit Ausnahme des aktuellen Vertexdatenstromzustands, den aktuellen Indexdatenstromstatus und die aktuell realisierten Texturen erfassen.

Der Zustand, der erfasst werden soll, lautet wie folgt; die unten aufgeführten Renderzustände, die unten aufgeführten Texturphasenzustände, den Viewport, alle Welttransformationen, die Ansichtstransformation, die Projektionstransformation, die Texturtransformation für alle Texturphasen, alle Benutzerclipebenen, das aktuelle Material, alle Lichter, die vor der Erstellung des Zustandsblocks verwendet wurden, den aktuellen Vertex-Shader-Handle, den aktuellen Pixelshaderziehpunkt, die aktuellen Vertex-Shaderkonstanten und die aktuellen Pixelshaderkonstanten.

Die zu aufzeichnenden Renderzustände lauten wie folgt:

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

Die zu aufzeichnenden Texturstufenzustände lauten wie folgt:

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

Signalisiert den Treiber nur, den Pixelzustand zu erfassen.

Beim Erfassen des Pixelzustands im reinen Gerätemodus sollte der folgende Zustand erfasst werden. die unten aufgeführten Renderzustände der Pixelverarbeitung, die unten aufgeführten Texturphasenzustände der Pixelverarbeitung, das aktuelle Pixelshaderhandle und die aktuellen Pixelshaderkonstanten.

Die zu aufzeichnenden Renderzustände lauten wie folgt:

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

Die zu aufzeichnenden Texturstufenzustände lauten wie folgt:

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

Signalisiert den Treiber, nur den Vertexzustand zu erfassen.

Beim Erfassen des Vertexzustands im reinen Gerätemodus sollte der folgende Zustand erfasst werden. die unten aufgeführten Vertexverarbeitungszustände, die unten aufgeführten Zustände der Scheitelpunktverarbeitungstextphase, alle Lichter, die vor der Erstellung des Zustandsblocks verwendet wurden, das aktuelle Vertex-Shaderhandle und die aktuellen Vertex-Shaderkonstanten.

Die zu aufzeichnenden Renderzustände lauten wie folgt:

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

Die zu aufzeichnenden Texturstufenzustände lauten wie folgt:

D3DTSS_TEXCOORDINDEX
D3DTSS_TEXTURETRANSFORMFLAGS

NULL-

Es wird keine vordefinierte Statusgruppe angegeben.

Bemerkungen

Weitere Informationen zur Verwendung dieser Struktur in der Zustandsblockverwaltung finden Sie unter beschleunigte Zustandsverwaltung im Grafikentwurfshandbuch.

Anforderungen

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