2011-08-18 5 views
1

Je suis confronté à un problème étrange pas sûr pourquoi cela se produit.Plusieurs GLSurfaceView se déplaçant en même temps

J'ai un Java basé Activity qui a un LinearLayout. Ce LinearLayout se compose de deux GLSurfaceView. Toutes les méthodes associées de GLSurfaceView comme OnDraw, SurfaceChanged etc. se déplacent appeler à JNI couche. À l'intérieur du calque JNI, je dessine un cube en utilisant OpenGLES. J'ai également créé un écouteur tactile et l'ai associé avec le premier GLSurfaceView. Une fois que je reçois un événement tactile, je déplace l'appel au calque JNI et fais pivoter le premier cube de façon aléatoire.

Problème lorsque je fais tourner mon premier cube, les deux cubes tournent exactement au même angle. J'ai débogué ce problème pendant quatre heures et je suis presque sûr qu'il n'y a rien de mal dans ma logique. Mais pour une raison inconnue lorsque je fais un changement dans un GLSurfaceView autre cube change automatiquement.

Des idées? Des problèmes similaires? Deviner?

Mise à jour

J'utilise même contexte à savoir mon activité pour les deux GLSurfaceView. Fondamentalement, j'ai une classe en C++ qui dessine le cube à travers les opengles. Maintenant, je crée avec succès deux cubes et je les affiche simultanément. Les deux cubes ont une texture différente sur laquelle je passe via la couche Java. Ma classe C++ a une méthode qui fait tourner le cube aléatoirement. Le problème est que si j'appelle la méthode d'un cube pour le faire pivoter, l'autre pivote automatiquement au même angle sans faire ce que je fais.

Répondre

0

Problème résolu il y avait une erreur logique dans mon code

Désolé pour le dérangement

0

Sans votre code, je suppose que vous êtes en train d'initialiser votre GLSurfaceView en utilisant le même contexte. Lorsque vous partagez un contexte, vous changez l'autre car ils partagent la même instance GL10 dans le Renderer. Je ne programme pas en android, mais en général vous utiliseriez plusieurs "viewports" pour afficher différentes choses.

+0

Oui, j'utilise même contexte pour initialiser le GLSurfaceView mais les deux cubes ont une texture sur elle. Est-ce le problème? –

0

Dites que votre premier GLSurfaceView est sur le premier côté gauche de votre écran et le second sur la deuxième moitié droite. Une idée consiste à vérifier de quel côté les coordonnées x, y du motionEvent appartient. Et puis passez la rotation et la traduction en conséquence.

Questions connexes