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;
}
Zugehörige Themen