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 メソッド呼び出しでの私の理解から、WorldState 要素は 1 つしかないため、最初のパラメーターは 0 である必要があります。サイズが 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 に答える