Partager via


Syntaxe de la technique d’effet (Direct3D 11)

Une technique d’effet est déclarée avec la syntaxe décrite dans cette section.

TechniqueVersion TechniqueName [ <Annotations> ]

{

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

}

Paramètres

Élément Description
TechniqueVersion
Technique10 ou Technique11. Les techniques qui utilisent des fonctionnalités nouvelles de Direct3D 11 (nuanceurs 5_0, BindInterfaces, etc.) doivent utiliser la technique11.
TechniqueName
Optionnel. Chaîne ASCII qui identifie de manière unique le nom de la technique d’effet.
< Annotations >
[in] Facultatif. Un ou plusieurs éléments d’informations fournis par l’utilisateur (métadonnées) qui sont ignorés par le système d’effets. Pour la syntaxe, consultez Syntaxe d’annotation (Direct3D 11).
Passer
Obligatoire mot clé.
PassName
[in] Facultatif. Chaîne ASCII qui identifie de manière unique le nom de la passe.
SetStateGroup
[in] Définissez un ou plusieurs groupes d’états tels que :
StateGroup Syntaxe
État blend
SetBlendState( arguments ); 

Pour connaître la liste des arguments, consultez [ID3D11DeviceContext::OMSetBlendState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-omsetblendstate).

État du gabarit de profondeur
SetDepthStencilState( arguments ); 

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

État du rastériseur
SetRasterizerState( arguments ); 

Consultez [ID3D11DeviceContext::RSSetState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-rssetstate) pour la liste d’arguments.

État du nuanceur
SetXXXShader( Shader );

SetXXXShader est l’un des setVertexShader, SetDomainShader, SetHullShader, SetGeometryShader, SetPixelShader ou SetComputeShader (qui sont similaires aux méthodes d’API ID3D11DeviceContext::VSSetShader, ID3D11DeviceContext::D SSetShader, ID3D11DeviceContext::HSSetShader, ID3D11DeviceContext::GSSetShader, ID3D11DeviceContext::P SSetShader et ID3D11DeviceContext::CSSetShader).

Le nuanceur est une variable de nuanceur, qui peut être obtenue de plusieurs façons :

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 ) );
État de la cible de rendu Valeurs possibles :
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

Similaire à ID3D11DeviceContext::OMSetRenderTargets.

Exemples

Cet exemple montre comment définir 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.

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

Format de l’effet

Syntaxe du groupe d’effets (Direct3D 11)

Groupes d’états d’effet