for 语句

根据条件表达式的计算,以迭代方式执行一系列语句。

[属性] 用于 ( 初始值设定项;条件;迭代器 ) { Statement Block; }

parameters

属性

一个可选参数,用于控制语句的编译方式。 如果未指定任何属性,编译器将首先尝试发出循环的滚动版本,如果失败,或者如果某些操作更容易,如果循环被取消滚动,将回退到循环的未滚动版本。

属性 说明
展开 (x) 展开循环,直到它停止执行。 可以选择指定循环要执行的最大次数。 与 [loop] 属性不兼容。
loop 生成使用流控制执行循环的每个迭代的代码。 与 [unroll] 属性不兼容。
fastopt 缩短编译时间,但生成较少主动的优化。 如果使用此属性,编译器将不会展开循环。
此属性仅影响支持 中断 指令的着色器模型目标。 此属性在着色器模型 vs_2_x着色器模型 3 及更高版本中可用。 当编译器编译循环时,它在 着色器模型 4 及更高版本中特别有用。 编译器默认模拟循环,以评估是否可以展开循环。 如果不希望编译器展开循环,请使用此属性来减少编译时间。
allow_uav_condition 允许计算着色器循环终止条件基于 UAV 读取。 循环不得包含同步内部函数。

初始 化

循环计数器的初始值。

条件

条件 表达式。 如果条件表达式的计算结果为 true,则执行语句块。 当表达式的计算结果为 false 时,循环结束。

迭 代

更新循环计数器的值。

语句块

一个或多个 HLSL 语句

备注

[unroll][loop] 属性互斥,在指定两者时将生成编译器错误。

如果指定了 [unroll] ,则忽略 [fastopt] 和 [allow_uav_condition] 属性。

另请参阅

流控制