【发布时间】:2012-09-02 16:31:28
【问题描述】:
在 Shader Model 2.0 下的 HLSL 着色器中编译以下 for 循环时,出现错误 X3511。
for (int x = -5; x <= 5; x++)
{
for (int y = -5; y <= 5; y++)
{
...
错误内容如下:无法展开循环,循环似乎没有及时终止(5 次迭代),使用 [unroll(n)] 属性强制使用更高的数字。
我知道这条错误消息,但我没有在这里为 for 语句的条件部分使用变量 - 它是硬编码的 x
提前致谢!
【问题讨论】:
-
当我删除第二个 for 循环时它会编译。所以:HLSL 中没有嵌套循环?!?
-
我不确定它是否适用于嵌套循环,但您是否尝试使用该属性增加迭代次数?作为一个疯狂的猜测,也许两个循环上的
[unroll(11)]都可以工作? -
不幸的是,在 Shader Model 2.0 下编译时我无法使用展开。我正在开发一个图像处理应用程序,所以我想确保该应用程序至少可以在 Windows XP 下运行。
标签: loops for-loop shader hlsl