[OpenGL] Lien clavier / rotation
Bonjour tous,
j'ai fais un rapide programme avec Qt et openGL afin de faire un cube:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#include "myGLWidget.h"
#include <GL/gl.h>
#include <GL/glu.h>
float rotateX;
float rotateY;
float rotateZ;
myGLWidget::myGLWidget() : QGLWidget()
{
}
void myGLWidget::paintGL() //c'est ici que l'on trace nos objets
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glLoadIdentity();
glRotatef(rotateX,1.0f,0.0f,0.0f);
glRotatef(rotateY,0.0f,1.0f,0.0f);
glRotatef(rotateZ,0.0f,0.0f,1.0f);
gluLookAt( 1.2, 1.7, 1.0, 0, 0, 0, 0, 0, 1);
glBegin(Quad);
/////je fais mon cube
glEnd(); |
tout fonctionne mais à présent je veux pouvoir faire tourner ce cube à l'aide du clavier, j'ai donc ajouté ceci:
dans le .h
Code:
1 2
|
void keyPressEvent(QKeyEvent *); |
et dans le .cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
void myGLWidget::keyPressEvent(QKeyEvent *keyEvent)
{
cout << "clavier?" << endl;
switch(keyEvent->key())
{
case Qt::Key_Up:
rotateX=rotateX+2;
updateGL();
break;
case Qt::Key_Down:
rotateY=rotateY+2;
break;
case Qt::Key_Left:
rotateZ=rotateZ-2;
break;
case Qt::Key_Right:
rotateZ=rotateZ+2;
break;
}
} |
(comme vous pouvez le voir il y a un cout dans cette methode qui me permet de voir si lorsque je touche au clavier il est detecté, je me rend compte que ça ne m'affiche jamais ce message, donc je pense que je gère mal la gestion du clavier...)
:roll:
comme les variables rotateX,Y,Z sont des variables gloables alors je m'attendais à ce que ça les modifient puis que cela fassent tourner mon cube...
:aie:
mais ça ne focntionne pas...
pourriez vous me dire pourquoi s'il vous plait ? :oops: