您可以在 GLSL 着色器中通过引用传递矩阵吗?

问题描述 投票:0回答:2

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

glsl
2个回答
13
投票

编辑:这个答案完全错误,如下面@AnOccasionalCashew所述

留在这里以免断线


您可以在函数签名中将属性标记为

inout
,这将使该属性有效地“按引用传递”

例如,

void doSomething( vec3 trans, inout mat4 mat )

这里

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

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


2
投票

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

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

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

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

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

out

© www.soinside.com 2019 - 2024. All rights reserved.