Ich rotiere meine Kamera abhängig von der Mausposition. Aber ich möchte das nur aktiv, wenn entweder die linke oder die rechte Maustaste gedrückt ist. Das Problem mit diesem Code ist, dass ich loslassen und erneut drücken muss, damit das Programm bemerkt, dass ich die Maus bewegt habe.GLUT Mausposition wird nicht aktualisiert
Bei der Verwendung der Tastaturtasten und Bewegen der Maus hat es funktioniert.
Ich versuche, PostRedisplay zu gluten, aber ich bin mir nicht sicher, ob es das ist, was ich brauche oder wie ich es benutze.
void processMouse(int button, int state, int x, int y) {
if (state == GLUT_DOWN) {
if (button == GLUT_LEFT_BUTTON) {mouseM=true;} if (button == GLUT_RIGHT_BUTTON) {mouseN=true;}
} if (state == GLUT_UP){ if (button == GLUT_LEFT_BUTTON){mouseM=false;} if (button == GLUT_RIGHT_BUTTON) {mouseN=false;} }
}
void mouseMove(int x, int y){
if (x < 0) angleX = 0.0; else if (x > w) angleX = 180.0; else //angleX = 5.0 * ((float) x)/w; angleX = (x-320)/50; angleZ = angleX; angleY= (y-240)/50;
}
Ich bin nicht ganz sicher, was Sie jede Chance meinen Sie mir ein paar schnellen Pseudo-Code zeigen können, zeigen, es? – snackbar
Plough bedeutet, dass es zwei separate Callback-Funktionen für die Maus gibt: eine für die Mausposition und eine für die Aktionen (d. H. Schaltfläche geklickt), und Sie müssen diese beiden Aspekte getrennt behandeln – dm76