1

我正在尝试在 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,因为只有 1 个 WorldState 元素。我通过了大小为 1024 的 mAudioData。

4

1 回答 1

1

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

 int audioData[1024];

 rs_allocation audioData;

或者

 int32_t *audioData;

并以与其他分配audioData相同的方式使用。可以在此处找到有关如何完成此操作的更多详细信息:

于 2012-02-19T23:32:54.393 回答