Bonjour à tous,

Je suis en train de cogiter sur un problème auquel : soit je n'ai rien compris, soit il n'y a pas de solution "miracle" à mes yeux. Le voici (je précise que je suis débutant dans le domaine et que je travaille avec OpenGL 2) :

J'ai la géométrie des objets de ma scène dans mes structures de données (concrètement, je ne travaille qu'avec des triangles, donc des structures autour de vertices et de faces).

Si par exemple une rotation doit être effectuée sur un objet, je vois deux manières de faire :

1) Effectuer une rotation de chaque vertex sur le CPU avec mon programme et envoyer le résultat à mon moteur 3D pour affichage.

2) Demander à OpenGL d'effectuer la rotation (glRotate), ça sera bien sûr beaucoup plus rapide qu'avec le CPU, mais, à ma connaissance, il n'y a pas moyen de récupérer le résultat de cette rotation pour l'inclure dans mes structures de données et seule la visualisation bénéficiera de cette vitesse.

Si un algorithme de mon programme a besoin des nouvelles positions de chaque vertex après rotation pour être appliqué, je suis à priori obligé de passer par la solution 1), ce qui risque de ralentir fortement le programme.

Quelqu'un a t-il une solution à ce problème ? À savoir, comment effectuer une rotation efficacement, de manière à ce qu'elle soit répercutée dans les structures de données et visuellement ?

J'ai pensé éventuellement à calculer les rotations avec OpenCL. Comme ça la carte graphique fait son travail pour les structures de données, et une partie du travail pour la visualisation.

Merci.