Partager via


Syntaxe de la technique d’effet (Direct3D 10)

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

technique10 TechniqueName [ <Annotations> ]

{

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

}

Paramètres

technique10

Mot clé obligatoire.

TechniqueName

Optionnel. Chaîne ASCII qui identifie de manière unique le nom de la technique d’effet.

Annotations

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

Passer

Mot clé obligatoire.

PassName

[in] Facultatif. Chaîne ASCII qui identifie de manière unique le nom du passage.

SetStateGroup

[in] Définissez un ou plusieurs groupes d’états tels que :

StateGroup Syntaxe
État de fusion
SetBlendState( arguments ); 

Consultez [OMSetBlendState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-omsetblendstate) pour connaître la liste d’arguments.

État du gabarit de profondeur
SetDepthStencilState( arguments ); 

Pour connaître la liste des arguments, consultez OMSetDepthStencilState .

État du rastériseur
SetRasterizerState( arguments ); 

Pour connaître la liste des arguments, consultez [RSSetState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-rssetstate).

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

or

SetXXXShader( CompileShader( NULL ) );

or

SetXXXShader( NULL );

SetXXXShader est l’un des setVertexShader, SetGeometryShader ou SetPixelShader (qui sont similaires aux méthodes d’API VSSetShader, GSSetShader et PSSetShader).

 

Les groupes d’états d’effet sont répertoriés dans l’é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 montre comment configurer l’état du rastériseur pour afficher un objet en wireframe.

RasterizerState rsWireframe { FillMode = WireFrame; };

...

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

Cet exemple montre comment définir l’état du nuanceur (à partir de l’exemple BasicHLSL10) ; qui utilise un vertex et un nuanceur 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