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.