Effektzustandsgruppen (Direct3D 10)
Effektzustände sind Name-Wert-Paare in Form eines Ausdrucks.
Mischzustand
Effektzustand | Group |
---|---|
ALPHATOCOVERAGEENABLE, BLENDENABLE, SRCBLEND, DESTBLEND, BLENDOP, SRCBLENDALPHA, DESTBLENDALPHA, BLENDOPALPHA, RENDERTARGETWRITEMASK | Mitglieder von D3D10_BLEND_DESC |
Tiefe und Schablonenzustand
Effektzustand | Group |
---|---|
DEPTHENABLE, DEPTHWRITEMASK, DEPTHFUNC, STENCILENABLE, STENCILREADMASK, STENCILWRITEMASK | Mitglieder von D3D10_DEPTH_STENCIL_DESC |
FRONTFACESTENCILFAIL, FRONTFACESTENCILZFAIL, FRONTFACESTENCILPASS, FRONTFACESTENCILFUNC, BACKFACESTENCILFAIL, BACKFACESTENCILZFAIL, BACKFACESTENCILPASS, BACKFACESTENCILFUNC | Mitglied der D3D10_DEPTH_STENCILOP_DESC |
Rasterungsstatus
Effektzustand | Group |
---|---|
FILLMODE | D3D10_FILL_MODE |
CULLMODE | D3D10_CULL_MODE |
FRONTCOUNTERCLOCKWISE, DEPTHBIAS, DEPTHBIASCLAMP, SLOPESCALEDDEPTHBIAS, ZCLIPENABLE, SCISSORENABLE, MULTISAMPLEENABLE, ANTIALIASEDLINEENABLE | Mitglieder D3D10_RASTERIZER_DESC |
Samplerzustand
Effektzustand | Group |
---|---|
Filter, AddressU, AddressV, AddressW, MipLODBias, MaxAnisotropy, ComparisonFunc, BorderColor, MinLOD, MaxLOD | Mitglieder von D3D10_SAMPLER_DESC |
Beispiele finden Sie unter Samplertyp (DirectX HLSL).
Effektobjektzustand
Dieses Effektobjekt | Entsprechung |
---|---|
RASTERIZERSTATE | Ein Rasterizer State-Zustandsobjekt . |
DEPTHSTENCILSTATE | Ein Tiefen- und Schablonenzustandsobjekt . |
BLENDSTATE | Ein Blend State-Zustandsobjekt . |
VERTEXSHADER | Ein kompiliertes Vertex-Shaderobjekt. |
PIXELSHADER | Ein kompiliertes Pixel-Shaderobjekt. |
GEOMETRYSHADER | Ein kompiliertes Geometrie-Shaderobjekt. |
DS_STENCILREF AB_BLENDFACTOR AB_SAMPLEMASK | Mitglieder 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 eines jeden Members, der einen Nicht-Standardwert aufweist.
StateObjectType ObjectName {
MemberName = value;
...
MemberName = value;
};
Wenn Sie beispielsweise ein Objekt für den Mischzustand 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 In Effect Technique Syntax (Direct3D 10) beschriebenen SetStateGroup-Funktionen auf einen Technikdurchlauf 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 zur Beschreibung der Verwendung von Zuständen finden Sie unter Zustandsverwaltung.