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] 属性。