Freigeben über


Syntax der Effektfunktion (Direct3D 10)

Eine Effektfunktion wird in HLSL geschrieben und mit der folgenden Syntax deklariert.

Syntax

ReturnTypeFunctionName ( [ ArgumentList ] )

{

\[ *Anweisungen* \]

};

Name Beschreibung
ReturnType Beliebige HLSL-Typen
FunctionName Eine ASCII-Zeichenfolge, die den Namen der Shaderfunktion eindeutig identifiziert.
Argumentlist Ein oder mehrere Argumente, getrennt durch Kommas (siehe Funktionsargumente (DirectX HLSL)).
Anweisungen Mindestens eine Anweisung (siehe Anweisungen (DirectX HLSL)), die den Text der Funktion bilden. Wenn eine Funktion ohne Körper definiert ist, gilt sie als Prototyp; und muss vor der Verwendung mit einem Körper neu definiert werden.

 

Eine Effektfunktion kann ein Shader oder einfach eine Funktion sein, die von einem Shader aufgerufen wird. Eine Funktion wird durch ihren Namen, die Typen ihrer Parameter und die Zielplattform eindeutig identifiziert. Daher können Funktionen überladen sein. Jede gültige HLSL-Funktion sollte diesem Format entsprechen. Eine ausführlichere Liste der Syntax für HLSL-Funktionen finden Sie unter Functions (DirectX HLSL).

Beispiel

Das BasicHLSL10-Beispiel verwendet sowohl einen Pixel-Shader als auch einen Vertex-Shader. Die Pixel-Shaderfunktion heißt RenderScenePS und ist unten dargestellt.

       
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;
}

Effektformat