Bonjour à tous
Avec un ami on s'est lancé dans la création d'un petit jeu du genre imaze, on en est qu'au début, mais on rencontre déjà des problèmes ...
Pour déplacer et orienter le point de vue du joueur on joue sur les paramètres de la fonction gluLookAt. Pour ce qui est des déplacement pas de soucis, par contre pour l'orientation il y a un hic. Voici comment on procède pour orienter le point de vue du joueur :
On a crée une structure pour le joueur qui contient 2 vecteurs, l'un en coordonnées cartésiennes (qui représente sa position) et l'autre en coordonnées sphérique (qui représente son orientation).
Pour rappel les coordonnées sphérique sont un jeu de coordonnées basé sur les angles : http://upload.wikimedia.org/wikipedi...oordinates.svg
Quand la souris se déplace sur l'axe X alors on va modifier la valeur de théta, quand la souris se déplace sur l'axe Y alors on va modifier la valeur de phi. Puis on effectue un changement de coordonnées : sphérique => cartésiennes, de manière a pouvoir l'utiliser.
PROBLEME : pour empêcher la souris de sortir de l'écran ou même d'atteindre les bord, on utilise la fonction :
SDL_WarpMouse(LARGEUR_ECRAN/2, HAUTEUR_ECRAN/2);
Ainsi elle se trouve toujours au centre de l'écran, on on peut toujours mesurer un déplacement. Malheureusement après avoir chronométrer la boucle principale, j'ai constaté qu'elle prenais pas mal de temps, pour optimiser j'ai posé des SDL_GetTicks() un peu partout pour savoir combien de temps prenait chaque fonction. Le temps maximal pour exécuter SDL_WarpMouse(LARGEUR_ECRAN/2, HAUTEUR_ECRAN/2); est de l'ordre de 20ms !!! C'est bien sur le cas extrême, mais 20ms ce n'est pas rien ! En gros cette fonction me limite a un maximum de 50fps ... alors vu qu'il y a des trucs en plus qui vont arriver ça risque de vite chuter ....
Voila ma question après toutes ces explications :
Existe-t-il un autre moyen simple et efficace de positionner la souris ? Peut importe la librairie.
Merci d'avance
Partager