webgl着色器中无法实现变量数组索引?

ple*_* me 14 glsl webgl

正如标题所说,我不能vector_array[foo]在webgl顶点着色器中做(假设foo是范围内和整数),对吗?

纹理是最好的选择,还是有解决方法或更好的方法来模仿查找表?

Ilm*_*nen 11

http://www.khronos.org/registry/webgl/specs/latest/#DYNAMIC_INDEXING_OF_ARRAYS"WebGL 只允许使用常量表达式,循环索引或组合进行动态索引.唯一的例外是顶点着色器中的统一访问,可以是使用任何表达式索引."

你试过吗?如果它不起作用,有几个选项.

如果您有少量值,if-else可以正常工作.无论如何,AFAIK的统一值将被加载到寄存器中,因此对它们进行十几个数学循环不会使着色器更慢.

对于大量的值,纹理是最好的选择.

  • 有一个解决方法:`/*给定变量i是索引*/for(int x = 0; x <MAX_VALUE_FOR_INDEX; x ++){if(x == i){/*使用变量x作为索引*/}} ` (10认同)