[OpenGL] La scène suit la souris

La scène suit la souris [OpenGL] - C++ - Programmation

Marsh Posté le 07-04-2007 à 17:04:49    

Bonjour j'aimerais faire en sorte que, dans mon programme en OpenGL (avec Glut), lorsque la souris bouge, le pointeur reste au centre et la caméra tourne dans la pièce, comme dans un fps.
 
Merci d'avance
 
NC


Message édité par nisalon_caje le 07-04-2007 à 17:06:30
Reply

Marsh Posté le 07-04-2007 à 17:04:49   

Reply

Marsh Posté le 07-04-2007 à 18:30:34    

nehe.gamedev.net


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 07-04-2007 à 18:37:16    

j'avais déjà cherché mais je n'avais pas trouvé lequel des tutoriels enseignait cela

Reply

Marsh Posté le 08-04-2007 à 00:27:00    

Il faut afficher le pointeur en 2d puis tu repasses à la 3d,
pour sa utilises:
 
glOrtho(0.0, ((double)window->init.width), 0.0,  
((double)window->init.height), 0.0, 0.0);

Reply

Marsh Posté le 08-04-2007 à 11:45:34    

d'accord pour afficher le pointeur en 2d, mais comment faire pour qu'il reste toujours au centre de l'écran, et que ce soit la scène qui bouge quand on bouge la souris et pas le pointeur

Reply

Marsh Posté le 08-04-2007 à 13:05:33    

Eh bien il faut que tu recuperes le mouvement de la souris en un vecteur (x,y), et que tu fasse tourner ta scene en fonction de cela. Par une primitive systeme, tu remets ton curseur au centre de la scene (ou tu le cache tout simplement!)

Reply

Marsh Posté le 08-04-2007 à 13:28:20    

"Par une primitive systeme" -> comment faire ?

Reply

Marsh Posté le 08-04-2007 à 13:31:04    

Reply

Marsh Posté le 08-04-2007 à 15:45:13    

nisalon_caje a écrit :

"Par une primitive systeme" -> comment faire ?


sous windows, il y a  
http://msdn.microsoft.com/library/ [...] cursor.asp

Reply

Marsh Posté le 20-04-2007 à 14:38:33    


 
Ok merci j'ai alors le code source suivant :  
dans ma fonction main() (j'utilise glut)
 

Code :
  1. glutDisplayFunc(display);
  2. glutKeyboardFunc(keyboard);
  3. glutPassiveMotionFunc(souris_passif);
  4. glutIdleFunc(core);
  5. glutMainLoop();


 
et ma fonction souris_passif
 

Code :
  1. void souris_passif(int x,int y){
  2. float vitesse_souris=0.1f;
  3. angle_cam.x+=float(y-Y_ORG)*vitesse_souris;
  4. angle_cam.y+=float(x-X_ORG)*vitesse_souris;
  5. // On met les angles dans l'intervalle [0,360]
  6. if(angle_cam.x>=360.0)
  7. angle_cam.x-=360.0;
  8. if(angle_cam.y>=360.0)
  9. angle_cam.y-=360.0;
  10. if(angle_cam.x<0.0)
  11. angle_cam.x+=360.0;
  12. if(angle_cam.y<0.0)
  13. angle_cam.y+=360.0;
  14. // On repositionne le curseur de la souris
  15. SetCursorPos(X_ORG,Y_ORG);
  16. glutPostRedisplay(); (J'ai essayé sans, ça ne change rien)
  17. }


 
 
Le problème est le suivant : quand je lance mon programme j'ai le droit à un écran sans image
 
Que faire pour résoudre le problème
 
Merci d'avance
 
NC

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed