Condividi tramite


Sintassi della funzione effetto (Direct3D 10)

Una funzione di effetto viene scritta in HLSL e viene dichiarata con la sintassi seguente.

Sintassi

ReturnTypeFunctionName ( [ ArgumentList ] )

{

\[ *Statements* \]

};

Nome Descrizione
ReturnType Qualsiasi tipo HLSL
FunctionName Stringa ASCII che identifica in modo univoco il nome della funzione shader.
ArgumentList Uno o più argomenti, separati da virgole (vedere Argomenti delle funzioni (DirectX HLSL)).
Istruzioni Una o più istruzioni (vedere Istruzioni (DirectX HLSL) che costituiscono il corpo della funzione. Se una funzione è definita senza un corpo, viene considerata un prototipo; e deve essere ridefinito con un corpo prima dell'uso.

 

Una funzione di effetto può essere uno shader o può essere semplicemente una funzione chiamata da uno shader. Una funzione è identificata in modo univoco dal nome, dai tipi dei relativi parametri e dalla piattaforma di destinazione; pertanto, è possibile eseguire l'overload delle funzioni. Qualsiasi funzione HLSL valida deve adattarsi a questo formato; per un elenco più dettagliato della sintassi per le funzioni HLSL, vedere Funzioni (DirectX HLSL).

Esempio

L'esempio BasicHLSL10 usa sia uno shader pixel che un vertex shader. La funzione pixel shader è denominata RenderScenePS ed è illustrata di seguito.

       
PS_OUTPUT RenderScenePS( VS_OUTPUT In,
                         uniform bool bTexture ) 
{ 
    PS_OUTPUT Output;

    // Lookup mesh texture and modulate it with diffuse
    if( bTexture )
        Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) *  
                              In.Diffuse;
    else
        Output.RGBColor = In.Diffuse;

    return Output;
}

Formato effetto