Condividi tramite


Sintassi tecnica dell'effetto (Direct3D 11)

Una tecnica di effetto viene dichiarata con la sintassi descritta in questa sezione.

TechniqueVersion TechniqueName [ <Annotazioni> ]

{

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

}

Parametri

Elemento Descrizione
TecnicaVersion
Tecnica10 o tecnica11. Le tecniche che usano funzionalità nuove a Direct3D 11 (5_0 shader, BindInterfaces e così via) devono usare la tecnica11.
TecnicaName
Facoltativa. Stringa ASCII che identifica in modo univoco il nome della tecnica dell'effetto.
<Annotazioni >
[in] Facoltativo. Una o più informazioni fornite dall'utente (metadati) ignorate dal sistema di effetto. Per la sintassi, vedere Sintassi annotazione (Direct3D 11).
Passare
Parola chiave obbligatoria.
PassName
[in] Facoltativo. Stringa ASCII che identifica in modo univoco il nome del passaggio.
SetStateGroup
[in] Impostare uno o più gruppi di stato, ad esempio:
StateGroup Sintassi
Stato di blend
SetBlendState( arguments ); 

Vedere [ID3D11DeviceContext::OMSetBlendState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-omsetblendstate) per l'elenco degli argomenti.

Stato dello stencil profondità
SetDepthStencilState( arguments ); 

Per l'elenco degli argomenti, vedere ID3D11DeviceContext::OMSetDepthStencilState .

Stato rasterizer
SetRasterizerState( arguments ); 

Per l'argomento, vedere [ID3D11DeviceContext::RSSetState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-rssetstate).

Stato shader
SetXXXShader( Shader );

SetXXXShader è uno di SetVertexShader, SetDomainShader, SetHullShader, SetGeometryShader, SetPixelShader o SetComputeShader (simile ai metodi API ID3D11DeviceContext::VSSetShader, ID3D11DeviceContext::D SSetShader, ID3D11DeviceContext::HSSetShader, ID3D11DeviceContext::GSSetShader, ID3D11DeviceContext::P SSetShader e ID3D11DeviceContext::CSSetShader.

Shader è una variabile shader, che può essere ottenuta in molti modi:

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 ) );
Eseguire il rendering dello stato di destinazione Uno dei valori possibili:
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

Simile a ID3D11DeviceContext::OMSetRenderTargets.

Esempio

In questo esempio viene impostato lo stato di fusione.

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

...

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

In questo esempio viene configurato lo stato rasterizer per eseguire il rendering di un oggetto in wireframe.

RasterizerState rsWireframe { FillMode = WireFrame; };

...

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

In questo esempio viene impostato lo stato dello shader.

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

Formato effetto

Sintassi del gruppo di effetti (Direct3D 11)

Gruppi di stati dell'effetto