Arrays 能否将固定大小的数组作为GLSL函数参数传递?

Arrays 能否将固定大小的数组作为GLSL函数参数传递?,arrays,function,glsl,parameter-passing,Arrays,Function,Glsl,Parameter Passing,在GLSL着色器中,我想创建一个看起来有点像这样的函数: void MyFunction(out float results[9]) { float value0 = 3.1546; float value1 = 42; // whatever value /* ... long, complicated code ... */ results[0] = value0; results[1] = value1; results[2]

在GLSL着色器中,我想创建一个看起来有点像这样的函数:

void MyFunction(out float results[9])
{
   float value0 = 3.1546;
   float value1 = 42;     // whatever value      
   /* ... long, complicated code ... */

   results[0] = value0;  
   results[1] = value1;
   results[2] = value2;
   ...
}
这样的函数签名可以在GLSL中使用和编译吗?

如果没有,是否有其他选择?

是,这是合法的GLSL代码


这并不意味着它一定会被编译,但它是法律代码。也就是说,最好只返回数组(您也可以这样做),而不是将其作为输出参数传递。

您是对的。我也在规范中找到了信息:为什么返回数组可能更好?使用一个局部变量并返回它,而不是就地修改一个变量,是否对编译器进行了一些优化?