在结构中设置数组

时间:2012-02-18 06:25:51

标签: java renderscript

我正在尝试在Java的Renderscript中设置一个自定义结构中的数组。

这是我的结构:

typedef struct WorldState {
 float time;
 int galaxyRadius;
 float angle;
 int audioData[1024];
} WorldState_t;

以下是我尝试设置数组“audioData”

的方法
mScript.get_worldState().set_audioData(0, mAudioData, true);

这是抛出的异常:

E/AndroidRuntime(8373): android.renderscript.RSIllegalArgumentException: Field packer sizelength 4096 does not match component size 4.

我只创建一个大小为1的ScriptField_WorldState。根据我在set_audioData方法调用中的理解,第一个参数需要为0,因为只有一个WorldState元素。我传递了大小为1024的mAudioData。

1 个答案:

答案 0 :(得分:1)

我不相信反射的Java层目前支持这种方式的直接数组操作。由于所有内存分配都由Renderscript的Java端管理,我建议更改

 int audioData[1024];

 rs_allocation audioData;

 int32_t *audioData;

并使用audioData与您使用其他分配的方式相同。有关如何完成此操作的更多详细信息,请访问: