Condividi tramite


Sintassi tecnica dell'effetto (Direct3D 10)

Una tecnica di effetto viene dichiarata con la sintassi seguente.

technique10 TechniqueName [ <Annotazioni> ]

{

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

}

Parametri

tecnica10

Parola chiave obbligatoria.

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 10).

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 ); 

Per l'argomento, vedere [OMSetBlendState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-omsetblendstate).

Stato dello stencil profondità
SetDepthStencilState( arguments ); 

Per l'elenco degli argomenti, vedere OMSetDepthStencilState .

Stato rasterizer
SetRasterizerState( arguments ); 

Per l'elenco degli argomenti, vedere [RSSetState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-rssetstate).

Stato shader
SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );

oppure

SetXXXShader( CompileShader( NULL ) );

oppure

SetXXXShader( NULL );

SetXXXShader è uno dei metodi DELL'API VSSetShader,GSSetShader e PSSetShader.

 

I gruppi di stati dell'effetto sono elencati nello stato effettivo.

Esempio

Questo esempio (dall'esempio CubeMapGS) imposta 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 shader (dall'esempio BasicHLSL10); che usa un vertice e un pixel 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