TJ *_*tts 1 javascript shader webgl glsles
我正在努力在WebGL中实现片段着色器,并且遇到了只能在for循环中使用常量表达式的限制.有没有人有这方面的合适的解决方法?
在我的具体情况下,我正在实现双边过滤器,目前在我的片段着色器中有一个窗口大小指定为const,但是希望能够从JavaScript更改它.制服不被认为是常量,因此不能用于for循环,所以我正在寻找其他实现方法.
我唯一能想到的是从JavaScript读取着色器源,解析它并用所需的窗口大小替换const的值,然后重新编译着色器.这对我的目的有用,但我想知道是否有更简单的方法.
如果你想/需要能够动态改变你的循环长度,你可以使用一个for循环计数到一个非常大的数字/无穷大,break一旦达到你的限制:
uniform int loopLimit;
for (int i = 0; i < 10000; i++) {
if (i == loopLimit) break;
// Do your stuff
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |