您可以将固定大小的数组作为 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 函数参数传递吗?的主要内容,如果未能解决你的问题,请参考以下文章