Effektzustandsgruppen (Direct3D 10)
Effektzustände sind Name-Wert-Paare in Form eines Ausdrucks.
Überblenden des Zustands
| Auswirkungszustand | Group |
|---|---|
| ALPHATOCOVERAGEENABLE, BLENDENABLE, SRCBLEND, DESTBLEND, BLENDOP, SRCBLENDALPHA, DESTBLENDALPHA, BLENDOPALPHA, RENDERTARGETWRITEMASK | Elemente von D3D10 _ BLEND _ DESC |
Tiefen- und Schablonenzustand
| Auswirkungszustand | Group |
|---|---|
| DEPTHENABLE, DEPTHWRITEMASK, DEPTHFUNC, STENCILENABLE, STENCILREADMASK, STENCILWRITEMASK | Elemente der D3D10 _ _ DEPTH-SCHABLONE _ DESC |
| FRONTFACESTENCILFAIL, FRONTFACESTENCILZFAIL, FRONTFACESTENCILPASS, FRONTFACESTENCILFUNC, BACKFACESTENCILFAIL, BACKFACESTENCILZFAIL, BACKFACESTENCILPASS, BACKFACESTENCILFUNC | Member von D3D10 _ DEPTH _ STENCILOP _ DESC |
Status des Rasterizers
| Auswirkungszustand | Group |
|---|---|
| Fillmode | FÜLLMODUS D3D10 _ _ |
| CULLMODE | D3D10 _ _ CULL-MODUS |
| FRONTCOUNTERCLOCKWISE, DEPTHBIAS, DEPTHBIASCLAMP, VERSKALIERTDEPTHBIAS, ZCLIPENABLE, SCISSORENABLE, MULTISAMPLEENABLE, ANTIALIASEDLINEENABLE | Elemente von D3D10 _ RASTERIZER _ DESC |
Samplerzustand
| Auswirkungszustand | Group |
|---|---|
| Filter, AddressU, AddressV, AddressW, MipLODBias, MaxAnisotropy, ComparisonFunc, BorderColor, MinLOD, MaxLOD | Member von D3D10 _ SAMPLER _ DESC |
Beispiele finden Sie unter Sampler type (DirectX HLSL) (Samplertyp (DirectX HLSL)).
Effect-Objektzustand
| Dieses Effektobjekt | Entsprechung |
|---|---|
| RASTERIZERSTATE | Ein Zustandsobjekt des Rasterizerzustands. |
| DEPTHSTENCILSTATE | Ein Tiefen- und Schablonenzustandsobjekt. |
| BLENDSTATE | Ein Blend State State-Objekt. |
| VERTEXSHADER | Ein kompiliertes Vertex-Shaderobjekt. |
| Pixelshader | Ein kompiliertes Pixelshaderobjekt. |
| GEOMETRYSHADER | Ein kompiliertes geometry-Shaderobjekt. |
| DS _ STENCILREF AB _ BLENDFACTOR AB _ SAMPLEMASK | Member von D3D10 _ PASS _ DESC. |
Definieren und Verwenden von Zustandsobjekten
Zustandsobjekte werden in FX-Dateien im folgenden Format deklariert. StateObjectType ist einer der oben aufgeführten Zustände, und MemberName ist der Name jedes Mitglieds, das einen nicht standardmäßigen Wert hat.
StateObjectType ObjectName {
MemberName = value;
...
MemberName = value;
};
Wenn Sie beispielsweise ein Blend-Zustandsobjekt einrichten möchten, bei dem AlphaToCoverageEnable und BlendEnable 0 auf FALSE festgelegt sind, wird der folgende [ ] Code verwendet.
BlendState NoBlend {
AlphaToCoverageEnable = FALSE;
BlendEnable[0] = FALSE;
};
Das Zustandsobjekt wird mithilfe einer der SetStateGroup-Funktionen, die unter Effect Technique Syntax (Direct3D 10)beschrieben sind, auf einen Technikpass angewendet. Um beispielsweise das oben beschriebene BlendState-Objekt anzuwenden, wird der folgende Code verwendet.
SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
Ein Tutorial, in dem die Verwendung von Status beschrieben wird, finden Sie unter Zustandsverwaltung.