fcall (sm5 - asm)

接口函数调用。

fcall fp#[arrayIndex][callSite]
说明
Fp#
[in]函数指针。
arrayIndex
[in] 可选。 指定函数指针数组的偏移量。 如果 fp# 未声明为可索引,则此参数必须是文本无符号整数。 否则,arrayIndex 可以是着色器寄存器的表单文本基数 + 偏移量。 例如,fcall fp1[r1.w + 0][0] 。
callSite
[in] 可选。 选定函数表中的文本无符号整数偏移量,选择要执行的函数正文 fb# 。

注解

fp#[arrayIndex][] 解析为从 fp# 声明中列出的函数表选项之外的 API 选择的特定函数表。

fp# 中的 #和 arrayIndex 的总和选择函数表。 例如,如果接口声明为 fp4[4][3] (数组大小为 4) ,则以下 fcall fp4[2][3] 和 fp5[1][3],因为 4+2 = 5+1。

限制

  • 如果 arrayIndex 使用动态索引,则如果 arrayIndex 在相邻着色器调用上发生分歧(可能在锁定步骤中执行),则行为是未定义的。 HLSL 编译器将尝试禁止这种情况。

    由于流控制,相邻调用可能处于非活动状态,因为它不会中断锁定执行。

  • 如果 fp# + arrayIndex 指定边界外索引,则行为是未定义的。

  • 对于此处所述的未定义情况,这意味着当前 D3D 设备的行为变得未定义,包括设备丢失的可能性。 但是,当前 D3D 设备之外不会访问或执行任何内存作为代码。

此说明适用于以下着色器阶段:

顶点 外壳 几何结构 像素 计算
X X X X X X

最小着色器模型

以下着色器模型中支持此说明:

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

着色器模型 5 程序集 (DirectX HLSL)