2010-11-01 2 views
0

Je suis très nouveau à OpenGL et à la programmation avec un élément graphique en général.Comment faire quelque chose comme une interpolation de mouvement dans OpenGL sur l'iPhone?

Actuellement, j'ai une texture qui est mappée en utilisant des sommets qui sont générés par une autre partie du code - ces quatre points qui représentent les coins changent quelques fois par seconde. Au fur et à mesure de sa mise en œuvre, cette image apparaîtra par saccades à différents endroits et sera mise en forme différemment lorsque les quatre points d'angle seront modifiés sur la minuterie. Ce que je voudrais, c'est que l'objet bouge rapidement et change de forme pour occuper les nouveaux points donnés par le programme - et je voudrais que cela se passe un peu en douceur (donc ça flotterait entre ces positions/formes fournies).

Y a-t-il un moyen de faire un genre d'interpolation de mouvement/forme comme ça dans OpenGL? Si oui, où puis-je trouver de la documentation ou, mieux encore, des exemples? J'ai de la difficulté à trouver ou à comprendre ce genre de chose.

ÉDITER: AUSSI - Je n'ai aucun problème en utilisant une autre méthode, il n'a pas besoin d'être OpenGL. Est-ce mieux fait dans Core Animation avec BasicAnimation? Si oui, où sont les ressources pour ce genre de transformation? Les formes sont des quadrilatères mais pas nécessairement des carrés ou des rectangles, donc j'aurais besoin de la capacité de spécifier chaque point d'angle.

Répondre

2

OpenGL ne fournit pas cette fonctionnalité.

La partie du code qui génère les sommets ne peut-elle être modifiée pour faciliter la transition des positions plutôt que de les changer brusquement? Si ce n'est pas le cas, pouvez-vous écrire du code au-dessus de ce code, et ce code que vous écrivez enveloppe la génération de position en effectuant une transition en douceur?

+0

Merci pour votre réponse! Je n'ai même pas pensé à simplement écrire du code pour obtenir des points intermédiaires .. Je ne sais pas pourquoi ça ne m'est pas venu à l'esprit! Est-ce que ce type de fonctionnalité est disponible dans d'autres endroits comme Core Animation? Peut-être que je n'ai pas besoin d'utiliser OpenGL? Je suis juste inquiet au sujet des frais généraux et de l'application à la traîne - il fait BEAUCOUP de travail comme il est en ce moment. – Tom

+0

Je ne sais rien à propos de Core Animation, mais si vous avez un code qui vous donne un point et que plus tard vous donnez un point complètement différent, vous avez juste besoin d'interpoler entre ces deux points. C'est assez basique (trouvez la différence entre les deux, décidez combien vous voulez de cette différence que vous voulez ajouter à votre premier point par image, ajoutez-le au premier point, et continuez à ajouter jusqu'à ce que vous atteigniez le second point [un certain nombre d'images plus tard]) .. –

Questions connexes