glutMouseFunc()
вызывается один раз, когда мышь нажата, и один раз, когда мышь отпущена.
Когда мышь нажата, тогда фактический аргумент состояние это GLUT_DOWN
. Когда мышь отпущена, тогда аргумент GLUT_UP
.
Дополнительно проверьте, если state == GLUT_DOWN
:
void mouse(int button, int state, int x, int y) {
if (state == GLUT_DOWN && // <----
button == GLUT_LEFT_BUTTON &&
v*p + xk <= 34 && v*p + yk <= 34 && v*p - xk <= 34 && v*p - yk <= 34) {
std::cout << "Resized" << std::endl;
p += 0.02;
}
glutPostRedisplay();
}