Et bien abzal ... avec la méthode de déplacement de camera, tu risque de rencontré certain souci et n'est pas du tout le plus optimisé. Le raisonnement que je t'offre juste en dessous peut semblé compliqué, mais la calitée sera au rendez vous.
Si j'en ai compris, tu souhaite pouvoir faire un zoom sur des photos comme si cela été un album photo. J'ai déjà programmer çà pour un album photo en javascript mais le principe est le même, en faite, aucun déplacement de camera ou de ta photo. Je m'explique ...
Part on du principe que tes photos sont affiché par un cuad, tu vas tout simplement agrandir le cuad pour zoomer (le déplacer si tu le souhaite pour des déplacement de "camera"). Donc notre image est taille réel sur l'écran, tu souhaites zoomer. Le quad s'agrandit ... Mais panique, cela devient moche, tu souhaite charger une photo plus précise du web... seulement, il n'est pas nécessaire de charger les parties de la photo qui ne seront pas à l'écran. il faudra donc, découpé tes photo en "régions" (comme les cartes autoroutière de la france) et ne charger, que les régions nécessaire (pas besoin de la carte de la Bretagne quand tu te trouve en montagne), chaque régions est une texture différente.... pas de problème, chaque région sur des cuads différent les un à coté des autres.
Idéalement, il faut que la largeur de la régions fasse la moitié de celle de l'écran, valable aussi pour la hauteur, comme çà, tu affiche 9 régions maximum.
Grace à cette technique, les chargement de détails seront bien plus optimisé, et les animation, plus fluide. Le CPU sera légèrement plus sollicité pour les zooms et déplacement, la carte graphique et la bande passante serons carement moin sollicité.
Le top, est que quand tu doit charger des régions de photo plus précise, elle ne s'afficheront pas forcement au même moment, donc, il faut dessiné tes cuad plus preci par dessus celui qui est de précision moin élever, en faisant correspondre les superpositions. Des que ton écran est tapissé de toutes tes régions plus précise, tu n'affiche plus les régions de précision moins élevé.
J'ai vérifié, et google map à ce genre d'algorithme.
PS : tout les cuad sont de largeur 1.0f et pour agrandire, utilise :
glScalef (ZoomValue, ZoomValue, ZoomValue);
et les deplacement : glTranslatef (x, y, z);
sinon ton CPU va en prendre plein les dents.
Partager