您可以将固定大小的数组作为 GLSL 函数参数传递吗?

Posted

技术标签:

【中文标题】您可以将固定大小的数组作为 GLSL 函数参数传递吗?【英文标题】:Can you pass a fixed-size array as a GLSL function parameter? 【发布时间】:2013-05-17 05:39:29 【问题描述】:

在 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 中使用和编译吗? 如果没有,有没有其他选择?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你是对的。我也在规范中找到了信息:opengl.org/registry/doc/GLSLangSpec.4.30.6.pdf#page=35 为什么返回数组可能更好?是否有一些编译器优化使用本地并返回而不是就地修改变量?

以上是关于您可以将固定大小的数组作为 GLSL 函数参数传递吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将不同大小的常量数组作为函数参数传递

将静态数组作为参数传递

我们可以在 PHP 中的任何函数中将数组作为参数传递吗?

将数组作为url参数传递并重定向到新页面

将数组作为 C++ 中方法的 const 参数传递

将函数作为参数传递。 C++