效果变量语法 (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
纹理采样是使用纹理采样器完成的。 若要在效果中设置采样器,请参阅 采样器类型。
相关主题