13

如何在 GLSL 着色器中通过引用传递?

4

2 回答 2

11

您可以将属性标记为inout函数签名中,这将使属性有效地“通过引用传递”

例如,

void doSomething( vec3 trans, inout mat4 mat )

这里mat是“按引用传递”,trans是按值传递。

mat必须是可写的(即不是统一的属性)

于 2012-11-29T19:57:55.407 回答
1

默认情况下,所有参数都是“按值传递”。您可以使用这些“参数限定符”更改此行为:

在:“按值传递”;如果函数中参数的值发生变化,则调用语句中的实际参数不变。

out:“通过引用”;调用函数时参数未初始化;参数值的任何更改都会更改调用语句中的实际参数。

inout:参数的值由调用语句初始化,函数所做的任何更改都会更改调用语句的实际参数。

所以如果你不想复制,你应该使用out

于 2020-11-20T04:50:40.407 回答