你能在GLSL着色器中通过引用传递矩阵吗?

时间:2012-11-29 19:51:43

标签: glsl

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

2 个答案:

答案 0 :(得分:12)

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

例如,

void doSomething( vec3 trans, inout mat4 mat )

此处mat“按引用传递”,trans按值传递。

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

答案 1 :(得分:0)

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

in:“传递价值”;如果在函数中更改了参数的值,则调用语句中的实际参数不变。

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

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

因此,如果您不想复制,则应使用out