D3D10_SIGNATURE_PARAMETER_DESC 结构 (d3d10shader.h)

描述着色器签名。

语法

typedef struct _D3D10_SIGNATURE_PARAMETER_DESC {
  LPCSTR                        SemanticName;
  UINT                          SemanticIndex;
  UINT                          Register;
  D3D10_NAME                    SystemValueType;
  D3D10_REGISTER_COMPONENT_TYPE ComponentType;
  BYTE                          Mask;
  BYTE                          ReadWriteMask;
} D3D10_SIGNATURE_PARAMETER_DESC;

成员

SemanticName

类型: LPCSTR

一个每个参数字符串,用于标识数据的使用方式。 请参阅 DirectX HLSL) (语义

SemanticIndex

类型: UINT

修改语义的语义索引。 用于区分使用相同语义的不同参数。

Register

类型: UINT

将包含此变量数据的寄存器。

SystemValueType

类型: D3D10_NAME

一个预定义的字符串,用于确定某些管道阶段的功能。 请参阅 D3D10_NAME

ComponentType

类型: D3D10_REGISTER_COMPONENT_TYPE

存储在寄存器中的每组件数据类型。 请参阅 D3D10_REGISTER_COMPONENT_TYPE。 每个寄存器最多可以存储四个组件的数据。

Mask

类型: BYTE

指示使用寄存器的哪些组件的掩码。

ReadWriteMask

类型: BYTE

指示如果签名是输出签名) (,则始终读取给定组件,如果签名是输入签名) ,则始终读取 (的掩码。 掩码是 D3D10_REGISTER_COMPONENT_TYPE 值的组合。

注解

着色器可以采用 n 个输入,并且可以生成 m 输出。 输入 (或输出的顺序) 参数、其关联类型和任何附加语义构成着色器签名。 每个着色器都有一个输入签名和一个输出签名。

编译着色器或效果时,某些 API 调用验证着色器签名 (,例如 D3D10CompileShaderD3D10CompileEffectFromMemory) 。 也就是说,他们将一个着色器的输出签名(如顶点着色器) ()与另一个着色器的输入签名进行比较, (像素着色器) 。 这可确保着色器输出的数据与使用该数据的下游着色器兼容。 兼容意味着着色器签名是上一个着色器阶段的完全匹配子集。 完全匹配意味着参数类型和语义必须完全匹配。 子集意味着下游阶段不需要的参数不需要在其着色器签名中包括该参数。

通过调用 ID3D10ShaderReflection::GetInputParameterDescID3D10EffectShaderVariable::GetInputSignatureElementDesc 等 API 从着色器或效果获取着色器签名。

要求

要求
Header d3d10shader.h

另请参阅

着色器结构