可以从可调用的函数设置脚本全局变量吗?

时间:2013-11-06 01:02:35

标签: renderscript

我尝试在whatever.rs内设置脚本全局:

uint32_t a = 2;
void set_a_from_float(float x) {
    // more processing in real life
    a = (uint32_t) x;
}
ScriptC_whatever w = new ScriptC_whatever(mRS);
w.invoke_set_a_from_float(3.0f);
Log.d("ContrivedExample:", ""+w.get_a()); // logs 2

这是一个愚蠢的例子,我知道我可以使用自动生成的getter / setter,但这个错误似乎仍然是违反直觉的。

为什么这不起作用?

1 个答案:

答案 0 :(得分:3)

反射的.java文件将缓存脚本中设置的初始值。如果从.set()更新值,则将更新缓存的值。 .get()返回缓存的值。

出于性能原因,我们不会在从脚本编写时更新缓存值。要将值发送回.java文件,您可以从rs_allocation读回或从脚本中使用rsSendToClient *()。