2012-02-18 3 views
0

Javaのレンダスクリプトでカスタム構造体内にある配列を設定しようとしています。ここで構造体内に配列を設定する

は私の構造体である:ここでは

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

は、私は、配列を設定しようとしていますどのようにある "オーディオデータ"

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メソッド呼び出しの私の理解から、最初のPA WorldState要素が1つしかないので、ラメーターは0にする必要があります。私は1024の大きさのmAudioDataを渡します。

答えて

1

現時点では、反映されたJavaレイヤーがこのように直接配列操作をサポートしているとは思いません。すべてのメモリ割り当てはのrenderScriptのJava側で管理されているので、私は

rs_allocation audioData; 

または

int32_t *audioData; 

int audioData[1024]; 

を変更すると、あなたは仕事と同じようにaudioDataで作業することをお勧め他の配分と。これがどのように行われるかについての詳細は、ここで見つけることができます:

+0

ねえ、応答のための感謝を!残念ながら、rs_allocationだけを残すように構造体内にポインタを置くことはできません。私は現在、ソリューションを実装しようとしていますが、割り当て内の要素にアクセスする方法を理解するのに問題があります。 –

関連する問題