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 ) ) );
}
}
Argomenti correlati