android - 从 Renderscript 内核返回 Renderscript 结构

标签 android renderscript

我希望从我的 renderscript 内核返回一个结构数组。我的问题是,虽然我可以使用生成的代码在 java 中创建一个结构数组,并通过获取由此生成的数组的分配将其传递给我的根方法,但我无法将数组返回到 java 中。 Renderscript 文档说使用 copyTo 方法从分配中复制出来,以确保 renderscript 已完成对其的操作。但是这个方法只支持float, int, byte, bitmap。即使在访问数组之前等待几秒钟以确保渲染脚本已经完成,输出分配中的数据似乎根本没有改变,所以我想知道我是否正在接近这个错误。

感谢任何帮助

编辑澄清:

我使用以下代码在 java 中创建我的结构数组

    ScriptField_NBody bodys = ScriptField_NBody.create1D(mRS, size, Allocation.USAGE_SCRIPT);
    ScriptField_NBody outBodys = new ScriptField_NBody(mRS, 1);

然后我在填充主体后调用我的 renderscript 函数

    nBodyScript.forEach_root(bodys.getAllocation(), outBodys.getAllocation())

我的渲染脚本应该简单地将 body 复制到 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,因为它只能接受 float 、整数、字节和位图,outBodies 对象也不会自行从分配中更新。请注意,NBody_t 是我在渲染脚本文件中定义的结构。

最佳答案

RenderScript 当前不反射(reflect)将值从用户定义的结构复制回 Java 的方法。我们确实只有对原始 Java 和向量类型进行操作的方法。分配仍可由其他内核或脚本端函数使用。

关于android - 从 Renderscript 内核返回 Renderscript 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418416/

相关文章:

java - 如何使用依赖Java项目的Ant构建Android项目?

android - 如何在 Android 中单击按钮时更改应用程序的语言

java - 我需要简单的 Android 动画示例

android - 使用渲染脚本android旋转位图

android - RenderScript 错误地操作内核的输出

android - 使用 Android Renderscript v8 支持库导致与其他共享库的链接错误

java - fragment 交易删除

android - 除了 Display.getOrientation() 已弃用之外,Display.getRotation() 和 Display.getOrientation() 之间有什么区别?

android - Renderscript 不工作的设备列表

android - 计算二维数组的总和很慢