Effektzustandsgruppen (Direct3D 11)

Effektzustände sind Name-Wert-Paare in Form eines Ausdrucks.

Blend-Zustand

Auswirkungszustand Group
ALPHATOCOVERAGEENABLEBLENDENABLESRCBLENDDESTBLENDBLENDOP SRCBLENDALPHADESTBLENDALPHABLENDOPALPHARENDERTARGETWRITEMASK Elemente von D3D11 _ BLEND _ DESC

Tiefen- und Schablonenzustand

Auswirkungszustand Group
DEPTHENABLEDEPTHWRITEMASKDEPTHFUNCSTENCILENABLESTENCILREADMASKSTENCILWRITEMASK Elemente von D3D11 _ DEPTH _ STENCIL _ DESC
FRONTFACESTENCILFAILFRONTFACESTENCILZFAILFRONTFACESTENCILPASSFRONTFACESTENCILFUNCBACKFACESTENCILFAILBACKFACESTENCILZFAILBACKFACESTENCILPASSBACKFACESTENCILFUNC Member von D3D11 _ DEPTH _ STENCILOP _ DESC

Rasterizerstatus

Auswirkungszustand Group
Fillmode _ _ D3D11-FÜLLMODUS
CULLMODE D3D11 _ _ CULL-MODUS
FRONTCOUNTERCLOCKWISEDEPTHBIASDEPTHBIASCLAMPSSCALEDDEPTHBIAS ZCLIPENABLESCISSORENABLEMULTISAMPLEENABLEANTIALIASEDLINEENABLE Member von D3D11 _ RASTERIZER _ DESC

Samplerstatus

Auswirkungszustand Group
Filter AddressU AddressV AddressW MipLODBias MaxAnisotropy ComparisonFunc BorderColor MinLOD MaxLOD Member von D3D11 _ SAMPLER _ DESC

Beispiele finden Sie unter Sampler Type (DirectX HLSL) (Sampler-Typ (DirectX HLSL)).

Effect-Objektzustand

Dieses Effect-Objekt Entsprechung
RASTERIZERSTATE Ein Zustandsobjekt des Rasterizerzustands.
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 _ STENCILREFAB _ BLENDFACTORAB _ SAMPLEMASK Member von D3DX11 _ 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 Unter Effect Technique Syntax (Direct3D 11)beschriebenen SetStateGroup-Funktionen 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 );
    

Syntax der Effekttechnik

Effect-Format (Direct3D 11)