2012-02-18 2 views
0

Je tente de définir un tableau qui se trouve dans une structure personnalisée dans Renderscript à partir de Java.Définition d'un tableau dans une structure

Voici mon struct:

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

Voici comment je tente de mettre le tableau "Audiodata"

mScript.get_worldState().set_audioData(0, mAudioData, true); 

Ceci est l'exception qui est jeté:

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

Je crée seulement un ScriptField_WorldState avec la taille 1. D'après ma compréhension dans l'appel de la méthode set_audioData, le premier pa rameter doit être 0 car il n'y a qu'un seul élément WorldState. Je passe mAudioData qui a une taille de 1024.

Répondre

1

Je ne crois pas que la couche Java réfléchie prend actuellement en charge la manipulation de matrice directe de cette manière. Étant donné que toutes les allocations de mémoire sont gérées par le côté Java de renderScript, je vous suggère de changer

int audioData[1024]; 

à

rs_allocation audioData; 

ou

int32_t *audioData; 

et travailler avec audioData de la même manière que vous travaillez avec d'autres allocations . Plus de détails sur la façon dont cela se fait peut être trouvé ici:

+0

Hey, merci pour la réponse! Malheureusement, vous ne pouvez pas avoir de pointeur dans une structure pour que rs_allocation ne soit plus disponible. J'essaie actuellement de mettre en œuvre une solution, mais je n'arrive pas à trouver comment accéder aux éléments de l'allocation. –

Questions connexes