2.3的shader中不能使用for和while循环吗

我写了一个blur的shader,里面用到了for循环,结果告诉我说
Loop index cannot be initialized with non-constant expression
必须使用常量,但for的值是uniform的,不可能是常量

然后又打算试试while,但是发现while和do while都不可用,报错说
This type of loop is not allowed

想问下是我哪里使用的有问题吗

楼主,我这也碰到这个问题了,你后面有找到解决方案吗?

试试递归函数 看看能不能绕过去

自己解答下

GLSL的for循环会被展开成GPU指令。所以for的上下限必须是常量GPU才能知道展开几次
所以只能想办法固定for循环的次数了

嗐!循环次数必须是常量…

兄嘚 英语可以塞

用for 性能低

兄嘚,楼上都说 了,for循环会被展开。相当于 代码复制了好几遍

3.8.4 会报错:ERROR: 0:667: ‘for’ : Invalid init declaration