Freigeben über


Effekttechniksyntax (Direct3D 11)

Eine Effekttechnik wird mit der in diesem Abschnitt beschriebenen Syntax deklariert.

TechniqueVersion TechniqueName [ <Anmerkungen> ]

{

pass *PassName* \[ <*Annotations* > \] {
\[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}

}

Parameter

Element Beschreibung
TechniqueVersion
Entweder technique10 oder technique11. Techniken, die neue Funktionen in Direct3D 11 (5_0-Shader, BindInterfaces usw.) verwenden, müssen technique11 verwenden.
TechniqueName
Optional. Eine ASCII-Zeichenfolge, die den Namen der Effekttechnik eindeutig identifiziert.
< Anmerkungen >
[in] Optional. Mindestens ein Teil der vom Benutzer bereitgestellten Informationen (Metadaten), die vom Effektsystem ignoriert werden. Syntax finden Sie unter Anmerkungssyntax (Direct3D 11).
bestehen
Erforderliche Schlüsselwort (keyword).
PassName
[in] Optional. Eine ASCII-Zeichenfolge, die den Namen des Durchlaufs eindeutig identifiziert.
SetStateGroup
[in] Legen Sie mindestens eine Zustandsgruppe fest, z. B.:
StateGroup Syntax
Mischzustand
SetBlendState( arguments ); 

Die Argumentliste finden Sie unter [ID3D11DeviceContext::OMSetBlendState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-omsetblendstate).

Tiefenschablonenzustand
SetDepthStencilState( arguments ); 

Die Argumentliste finden Sie unter ID3D11DeviceContext::OMSetDepthStencilState .

Rasterizerstatus
SetRasterizerState( arguments ); 

Die Argumentliste finden Sie unter [ID3D11DeviceContext::RSSetState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-rssetstate).

Shaderstatus
SetXXXShader( Shader );

SetXXXShader ist eine von SetVertexShader, SetDomainShader, SetHullShader, SetGeometryShader, SetPixelShader oder SetComputeShader (die den API-Methoden ID3D11DeviceContext::VSSetShader ähneln, ID3D11DeviceContext::D SSetShader, ID3D11DeviceContext::HSSetShader, ID3D11DeviceContext::GSSetShader, ID3D11DeviceContext::P SSetShader und ID3D11DeviceContext::CSSetShader).

Shader ist eine Shadervariable, die auf verschiedene Arten abgerufen werden kann:

SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
SetXXXShader( CompileShader( NULL ) );
SetXXXShader( NULL );
SetXXXShader( myShaderVar );
SetXXXShader( myShaderArray[2] );
SetXXXShader( myShaderArray[uIndex] );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0 ) );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0, strStream1, strStream2, strStream3, RastStream ) );
Renderzielstatus Enthält einen der folgenden Werte:
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

Ähnlich wie ID3D11DeviceContext::OMSetRenderTargets.

Beispiele

In diesem Beispiel wird der Füllzustand festgelegt.

BlendState NoBlend
{ 
    BlendEnable[0] = False;
};

...

technique10
{
    pass p2 
    {
        ...
        SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
    }
}

In diesem Beispiel wird der Rasterisierungszustand zum Rendern eines Objekts im Drahtmodell eingerichtet.

RasterizerState rsWireframe { FillMode = WireFrame; };

...

technique10
{
    pass p1 
    {
        ....
        SetRasterizerState( rsWireframe );
    }
}

In diesem Beispiel wird der Shaderzustand festgelegt.

technique10 RenderSceneWithTexture1Light
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );
    }
}

Effektformat

Effektgruppensyntax (Direct3D 11)

Effektstatusgruppen