OpenGLでマウスの水平方向の動きを検出しようとしているので、検出されたらglutPostRedisplay()を実行します。問題は、マウスの垂直方向の動きでもシーンが再描画されることです。
これは登録されたコールバックのコードです(mouse_inixとmouse_iniyはグローバル(double)変数であることに注意してください):
void mouse(int button, int state, int x, int y)
{
if (state == GLUT_DOWN) {
mouse_inix = (double)x;
mouse_iniy = (double)y;
}
}
void motion(int x, int y)
{
if (((double)x) != mouse_inix) {
angle += 20.0;
glutPostRedisplay();
}
}