效果变量语法 (Direct3D 10)

使用以下语法声明效果变量。

语法

DataTypeVariableName [ : SemanticName ] <Annotations>;

“属性” 说明
数据类型 任何 基本 类型或 纹理 类型。
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

纹理采样是使用纹理采样器完成的。 若要在效果中设置采样器,请参阅 采样器类型

效果格式