效果變數語法 (Direct3D 10)
效果變數會以下列語法宣告。
Syntax
DataTypeVariableName [ : SemanticName ] <Annotations> ;
名稱 | 描述 |
---|---|
DataType | 任何 基本 或 紋理 類型。 |
VariableName | 可唯一識別效果變數名稱的 ASCII 字串。 |
SemanticName | ASCII 字串,表示應如何使用變數的其他資訊。 語意是 ASCII 字串,可以是預先定義的系統值或自訂使用者字串。 |
註解 | 一或多個使用者提供的資訊, (效果系統忽略的中繼資料) 。 如需語法,請參閱 注釋語法 (Direct3D 10) 。 |
在所有函式之外宣告的效果變數會視為範圍中的全域;在函式內宣告的變數是該函式的區域變數。
範例
BasicHLSL10 範例會使用全域變數,而沒有材質色彩、淺色屬性和轉換矩陣的語意。
此範例說明全域效果變數。
float4 g_MaterialAmbientColor; // Material's ambient color
float4 g_MaterialDiffuseColor; // Material's diffuse color
float3 g_LightDir[3]; // Light's direction in world space
float4x4 g_mWorld; // World matrix for object
本範例說明著色器函式的局部效果變數。
VS_OUTPUT RenderSceneVS( ... )
{
float3 vNormalWorldSpace;
float4 vAnimatedPos;
// shader body
}
此範例說明具有語意的函式參數。
VS_OUTPUT RenderSceneVS( float4 vPos : SV_POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD0,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
...
}
此範例說明宣告紋理變數。
Texture2D g_MeshTexture; // Color texture for mesh
取樣紋理是使用紋理取樣器來完成。 若要在效果中設定取樣器,請參閱 取樣器類型。
相關主題