我正在尝试在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。
答案 0 :(得分:1)
我不相信反射的Java层目前支持这种方式的直接数组操作。由于所有内存分配都由Renderscript的Java端管理,我建议更改
int audioData[1024];
到
rs_allocation audioData;
或
int32_t *audioData;
并使用audioData
与您使用其他分配的方式相同。有关如何完成此操作的更多详细信息,请访问: