函式宣告語法

HLSL 函式會以下列語法宣告。

[StorageClass][clipplanes () ][precise]Return_Value Name ( [ArgumentList] ) [: Semantic] { [StatementBlock] };

 

參數

StorageClass

重新定義函式宣告的修飾詞。 inline 是目前唯一的修飾詞值。 修飾詞值必須 內嵌 ,因為它也是預設值。 因此,不論您是否指定 內嵌,HLSL 中的所有函式都是內嵌的,都是內嵌的。 內嵌函式會在編譯每個函式呼叫的) 時,產生函式主體 (的複本。 這是為了減少呼叫函式的額外負荷。

Clipplanes

裁剪平面的選擇性清單,最多可達 6 個使用者指定的裁剪平面。 這是SV_ClipDistance的替代機制,適用于功能層級9_x和更新版本。

名字

可唯一識別著色器函式名稱的 ASCII 字串。

ArgumentList

選擇性引數清單,這是傳遞至函式的逗號分隔 引數 清單。

語義

可識別傳回資料 (的選擇性字串,請參閱 DirectX HLSL) ) 語意 (。

StatementBlock

組成函式主體的選擇性 語句 。 未定義主體的函式稱為函式原型;必須先在其他地方定義原型函式的主體,才能呼叫函式。

傳回值

傳回類型可以是下列任一 HLSL 類型

備註

此頁面的語法幾乎描述每種 HLSL 函式類型,包括頂點著色器、圖元著色器和協助程式函式。 雖然幾何著色器也會使用函式來實作,但其語法稍微複雜一點,因此有一個定義幾何著色器函式宣告的個別頁面, (請參閱 Geometry-Shader 物件 (DirectX HLSL) ) 。

只要函式提供參數類型和/或參數順序的唯一組合,就可以多載函式。 HLSL 也會實作一些內建或 內建函式

您可以使用 clipplanes 屬性來指定使用者特定的裁剪平面。 Windows將這些裁剪平面套用至所有繪製的基本類型。 剪輯平面屬性的運作方式類似SV_ClipDistance,但適用于所有硬體功能層級9_x和更新版本。 如需詳細資訊,請參閱 功能層級 9 硬體上的使用者裁剪平面

範例

此範例來自 BasicHLSL10.fx 的 BasicHLSL10 範例

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; 
    float4 Diffuse    : COLOR0;
    float2 TextureUV  : TEXCOORD0;
};

VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
                         float3 vNormal : NORMAL,
                         float2 vTexCoord0 : TEXCOORD,
                         uniform int nNumLights,
                         uniform bool bTexture,
                         uniform bool bAnimate )
{
    VS_OUTPUT Output;
    ...
    return Output;    
}

此範例來自 AdvancedParticles.fx 的 AdvancedParticles 範例,說明如何使用傳回型別的語意。

//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{   
    return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}

函式 (DirectX HLSL)