Bonjour à tous,
Alors voilà je voudrais faire une caméra freefly avec opengl et pour cela j'aurais besoin d'obtenir le mouvement relatif de la souris entre deux tours de la boucle principale. Ce qu'il m'aurait fallu c'est une méthode pour obtenir directement ces valeurs (comme on peut les avoir avec la SDL avec SDL_MouseMotionEvent::xrel et SDL_MouseMotionEvent::yrel)
Mais bon je n'ai pas trouvé donc essayé un truc du genre :
(...)
case Event::MouseMoved:
int current_x = Mouse::getPosition(m_win).x, current_y = Mouse::getPosition(m_win).y;
int elapsed_x = current_x - last_x, elapsed_y = current_y - last_y;
last_x = current_x; last_y = current_y;
if(elapsed_x != 0 || elapsed_y != 0)
{
cout << elapsed_x << "-" << elapsed_y << endl;
}
break;
(...)
Ça marche super bien, sauf qu'il y a un problème : lorsque la souris sort de la fenêtre ça ne marche plus (et c'est normal), du coup j'ai modifié et rajouté une ligne :
(...)
case Event::MouseMoved:
int current_x = Mouse::getPosition(m_win).x, current_y = Mouse::getPosition(m_win).y;
int elapsed_x = current_x - last_x, elapsed_y = current_y - last_y;
last_x = current_x; last_y = current_y;
if(elapsed_x != 0 || elapsed_y != 0)
{
cout << elapsed_x << "-" << elapsed_y << endl;
Mouse::setPosition(Vector2i(320, 200), m_win); // <-- Ici la ligne rajoutée
}
break;
(...)
Et là ça ne marche pas ... enfin si mais pas vraiment ^^
Avec le code précédent (sans le setPosition), j'avais un bon "débit" de
cout dans ma console (peut être 50 par secondes environ). Mais maintenant avec le setPosition je dois en avoir à peu près 4 par secondes du coup ça m'embête un peu, vous n'auriez pas une idée ?
Merci d'avance pour vos réponse
EDIT: Merde je viens de me rendre compte que je me suis trompé de forum dsl xD, si un admin pouvait déplacer ce topic dans le forum Fenêtrage je lui en serait reconnaissant, merci ^^