Syntaxe d’effet technique (Direct3D 10)

Une technique d’effet est déclarée avec la syntaxe suivante.

[ < Annotations TechniqueName technique10 > ]

{

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

}

Paramètres

technique10

Mot clé requis.

TechniqueName

Optionnel. Chaîne ASCII qui identifie de façon unique le nom de la technique d’effet.

Annotations

[]facultatif. Un ou plusieurs éléments d’informations fournies par l’utilisateur (métadonnées) qui sont ignorés par le système d’effet. Pour obtenir la syntaxe, consultez syntaxe d’annotation (Direct3D 10).

directes

Mot clé requis.

PassName

[]facultatif. Chaîne ASCII qui identifie de façon unique le nom de la passe.

SetStateGroup

[dans, ] définissez un ou plusieurs groupes d’États tels que :

StateGroup Syntax
État de fusion
SetBlendState( arguments ); 

Consultez [OMSetBlendState] (/Windows/Desktop/API/D3D10/NF-D3D10-id3d10device-omsetblendstate) pour la liste d’arguments.

État du stencil de profondeur
SetDepthStencilState( arguments ); 

Consultez OMSetDepthStencilState pour obtenir la liste des arguments.

État du rastériseur
SetRasterizerState( arguments ); 

Consultez [RSSetState] (/Windows/Desktop/API/D3D10/NF-D3D10-id3d10device-rssetstate) pour la liste d’arguments.

État du nuanceur
SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );

or

SetXXXShader( CompileShader( NULL ) );

or

SetXXXShader( NULL );

SetXXXShader est l’un des SetVertexShader, SetGeometryShaderou SetPixelShader (qui sont similaires aux méthodes d’API VSSetShader, GSSetShaderet PSSetShader).

Les groupes d’États d’effet sont répertoriés en État d’effet.

Exemples

Cet exemple (de l' exemple CubeMapGS) définit l’état de fusion.

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

...

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

Cet exemple configure l’état du rastériseur pour afficher un objet en mode filaire.

RasterizerState rsWireframe { FillMode = WireFrame; };

...

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

Cet exemple définit l’état du nuanceur (à partir de l' exemple BasicHLSL10); qui utilise un nuanceur de sommets et de pixels.

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

Format d’effet