[glut] gestion du clavier, printf des touches

gestion du clavier, printf des touches [glut] - C - Programmation

Marsh Posté le 24-12-2004 à 19:18:50    

:hello:
 
j'essaie de me familiariser avec glut mais je n'arrive pas à afficher les touches que j'enfonce. Est-ce que quelqu'un peut compiler ça et me dire si ça marche pour lui? (je suis sous windows mais c'est pour linux à terme). C'est un fichier de tutorial que je modifie pour tester.
 
 

Code :
  1. #include <gl/glut.h>
  2. #include <stdio.h>
  3. #define WIDTH 640
  4. #define HEIGHT 480
  5. void Display();
  6. void Reshape(int,int);
  7. void Init();
  8. void Clavier( unsigned char key, int x, int y );
  9. ////////////////////////////////////////////////////////////////////////////
  10. int main( int argc, char *argv[ ])
  11. {
  12. glutInit(&argc,argv);
  13. glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH);
  14.     glutInitWindowSize(WIDTH,HEIGHT);
  15. glutInitWindowPosition(50,50);
  16. glutCreateWindow("Scène 3D" );
  17. Init();
  18. glutDisplayFunc(Display);
  19. glutReshapeFunc(Reshape);
  20. glutKeyboardFunc (Clavier);
  21. glutMainLoop();
  22. return 0;
  23. }
  24. void Init()
  25. {
  26. glEnable(GL_DEPTH_TEST);
  27. }
  28. void Display()
  29. {
  30. glClearColor(0,0,0,0); // selectionne la couleur noire (qui est celle par défaut)
  31. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  32. glMatrixMode(GL_MODELVIEW);
  33. glLoadIdentity();
  34. gluLookAt(4,3,3,0,0,0,0,1,0);
  35. glBegin(GL_QUADS);
  36. glColor3d(1,0,0);
  37. glVertex3i(1,1,1);
  38. glVertex3i(1,-1,1);
  39. glVertex3i(-1,-1,1);
  40. glVertex3i(-1,1,1);
  41. glColor3d(0,1,0);
  42. glVertex3i(1,1,-1);
  43. glVertex3i(1,-1,-1);
  44. glVertex3i(-1,-1,-1);
  45. glVertex3i(-1,1,-1);
  46. glColor3d(0,0,1);
  47. glVertex3i(1,1,1);
  48. glVertex3i(1,-1,1);
  49. glVertex3i(1,-1,-1);
  50. glVertex3i(1,1,-1);
  51. glColor3d(0,1,1);
  52. glVertex3i(-1,1,1);
  53. glVertex3i(-1,-1,1);
  54. glVertex3i(-1,-1,-1);
  55. glVertex3i(-1,1,-1);
  56. glColor3d(1,1,0);
  57. glVertex3i(-1,1,-1);
  58. glVertex3i(-1,1,1);
  59. glVertex3i(1,1,1);
  60. glVertex3i(1,1,-1);
  61. glColor3d(1,0,1);
  62. glVertex3i(-1,-1,-1);
  63. glVertex3i(-1,-1,1);
  64. glVertex3i(1,-1,1);
  65. glVertex3i(1,-1,-1);
  66. glEnd();
  67. glFlush();
  68. }
  69. void Reshape(int w, int h)
  70. {
  71. glViewport(0,0,w,h);
  72. glMatrixMode(GL_PROJECTION); // Choisit la matrice de projection
  73. glLoadIdentity();
  74. gluPerspective(45.0,(float) w/h,1.,10.);
  75. printf("reshape\n" );
  76. }
  77. void Clavier( unsigned char key, int x, int y )
  78. {
  79.      printf("touche %c (ASCII:%d)\n",key,key);
  80. }

Reply

Marsh Posté le 24-12-2004 à 19:18:50   

Reply

Marsh Posté le 24-12-2004 à 19:41:11    

essaye avec

Code :
  1. glutKeyboardFunc (&Clavier)

Reply

Marsh Posté le 24-12-2004 à 19:51:15    

ok personne ne crie windows cai le mal ou des trucs comme ça mais en fait je viens de me rendre compte que quand je lance l'exe mon prog se lance dans une fenêtre mais la console reprend la main... Donc je me retrouve avec une nouvelle invite de ligne de commande, je vois pas comment un printf pourrait marcher avec ça...
 
 
 
 
ps: pour le & ça passe à la compil mais je dirais que le nom d'une fonction c'est déjà son adresse donc pas la pein de rajouter &

Reply

Marsh Posté le 24-12-2004 à 21:30:01    

kaloskagatos a écrit :

pour le & ça passe à la compil mais je dirais que le nom d'une fonction c'est déjà son adresse donc pas la pein de rajouter &


Exact.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-12-2004 à 22:18:23    

essaye un fflush() apres ton printf (il me semble que c'est ce que j'avais fait en TP, mais sous linux )

Reply

Marsh Posté le 25-12-2004 à 22:22:57    

c0wb0y a écrit :

essaye un fflush() apres ton printf (il me semble que c'est ce que j'avais fait en TP, mais sous linux )


Ca n'a un impact que si la ligne est incomplète (pas de '\n' final) ce qui semble ne pas être le cas ici...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-12-2004 à 22:37:32    

oui ça ne change rien :/ Je ne sais pas pourquoi ma console reprend la main dès que je lance l'exe. Je me retrouve avec une invite à la C:\ alors que normalement ça ne se produit que lorsque le programme se finit naturellement ou avec un CtrlC. J'ai compilé avec devc++, je vais essayer avec gcc à la main

Reply

Sujets relatifs:

Leave a Replay

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