2011-08-14 3 views
1

Je suis en train de concevoir une animation opengl es 1.1 simple sur la plate-forme Android, où les triangles de maillage d'un objet spécifique explose dans différentes directions lors d'un événement de collision. Comme tous les triangles nécessiteront leur propre transformation unique lorsqu'ils exploseront les uns des autres, j'en suis arrivé à la conclusion relativement mal informée que j'ai l'une des deux options suivantes:Opengl es 1.1 nombre élevé de transformations

a) Utiliser des données de tampon de vertex fixes, et changer la matrice de transformation opengl pour chaque triangle pendant le cycle de rendu. Bien que cela élimine le besoin de transformer manuellement les données de vertex via la CPU, cela nécessite l'utilisation de nombreuses commandes de transformation/dessin 'gl' explicites par trame. B) Utiliser deux buffers de sommets générés dynamiquement, et utiliser un thread supplémentaire pour calculer l'ensemble de sommets suivant pendant la génération de l'image en cours. Alors que le thread supplémentaire est capable d'effectuer ses tâches parallèlement aux événements d'attente GPU/Blanking qui se produisent sur le thread de rendu, toutes les transformations devront être effectuées via du code Java car les transformations opengl ne s'appliquent qu'au cycle de rendu. Comme je l'ai dit, il s'agit d'une conclusion relativement mal informée, je serais donc reconnaissant pour tout conseil concernant la mise en œuvre de ce programme.

+0

Ma première supposition (donc ce n'est pas une réponse) serait, que l'approche b) est une bien meilleure idée que a) et devrait être la méthode de choix. –

Répondre

1

La mise en place d'une matrice de transformation par triangle va être horriblement lente, donc votre plan b est beaucoup mieux. Une autre option pourrait être de passer à GLES 2.0, et d'essayer de calculer les nouvelles positions de vertex dans le vertex shader.

Questions connexes