你可以传递一个固定大小的数组作为GLSL函数参数吗?

wip*_*wip 6 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] = value2;
   ...
}
Run Code Online (Sandbox Code Playgroud)

可以在GLSL中使用和编译这样的函数签名吗?
如果不是,还有其他选择吗?

Nic*_*las 5

是的,这是合法的GLSL代码.

这并不意味着它肯定会编译,但它是合法的代码.话虽这么说,最好只返回数组(你也可以这样做),而不是将它作为输出参数传递.

  • 为什么退回阵列可能更好?是否有一些编译器优化使用本地并返回而不是就地修改变量? (3认同)