我正在寻找从我的渲染脚本内核返回一个结构数组。我的问题是,虽然我可以使用生成的代码在 java 中创建一个结构数组,并通过获取由此生成的数组的分配将其传递给我的根方法,但我无法将数组返回到 java。Renderscript 文档说使用 copyTo 方法从分配中复制出来,以确保渲染脚本已完成对其的操作。但是这个方法只支持float、int、byte、bitmap。即使在访问数组之前等待几秒钟以确保渲染脚本已完成输出分配中的数据似乎根本没有改变,所以我想知道我是否正在接近这个错误。
任何帮助都表示赞赏
编辑澄清:
我使用以下内容在 java 中创建我的结构数组
ScriptField_NBody bodys = ScriptField_NBody.create1D(mRS, size, Allocation.USAGE_SCRIPT);
ScriptField_NBody outBodys = new ScriptField_NBody(mRS, 1);
然后我在填充主体后调用我的渲染脚本函数
nBodyScript.forEach_root(bodys.getAllocation(), outBodys.getAllocation())
我的渲染脚本应该简单地将正文复制到 outBodys
void root(const NBody_t *v_in, NBody_t *v_out, uint32_t x) {
*v_out = *v_in;
}
回到java,我现在想访问outBodies,(从调试代码我知道我的renderscript函数读取数据并很好地复制它)。但是我不能在 outBodys.getllocation() 函数上使用标准的 copyTo,因为它只能接受浮点数、整数、字节和位图,outBodies 对象也不能自行从分配中更新。请注意,NBody_t 是我在 renderscript 文件中定义的结构。