我正在使用最新版本的 Chrome(和 Firefox)为 WebGL(GLSL ES 1.0)编写片段着色器,并编写了一个迭代算法。
所以首先,我发现循环的长度非常有限(文档说它在编译时必须是可猜测的,这意味着它必须是一个常数或非常接近)。
此外,我必须编写一个 ( for
,因为它是唯一一个必须根据标准实现的) 循环,该循环可能很长,但几乎每次在结束前都会中断。
现在,我注意到如果我设置更高的最大数量,着色器的编译和链接会花费更多时间。所以,除非我错了,否则编译器会循环展开。
我不确定是否可以做任何事情,但我尝试了一些事情,编译器似乎也内联函数,即使在循环中调用也是如此。
我不觉得着色器花费整整一分钟来编译大约一百次循环迭代是不正常的。还是我做错了?对于 GPU 来说,片段着色器中的一百次迭代是否太多了?因为它编译后似乎运行得很好。