マウスの位置に応じてカメラを回転させています。しかし、これは、マウスの左ボタンまたは右ボタンが押されている場合にのみ有効です。このコードの問題は、私がマウスを動かしたことに気づくためにプログラムをリリースしてもう一度押す必要があることです。GLUTマウスの位置が更新されない
キーボードのキーを使用してマウスを動かすと効果がありました。
glutPostRedisplayを試していますが、私が必要としているか、それを使用する方法がわかりません。
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;
}
:
これらの機能を組み合わせる方法の詳細については、このサイトでは3.030部分をチェックしてそれ? – snackbar
Ploughの意味は、マウスの2つのコールバック関数(マウスの位置とボタンのクリック)を別々に扱う必要があることです。 – dm76