Я реализую стиль мышью FPS, чтобы «летать» вокруг моей сцены.glutWarpPointer делает множественные вызовы glutPassiveMotionFunc обратный вызов
У меня есть правильная вращение камеры и все, только моя проблема заключается в том, что, когда я пытаюсь деформировать мышь до середины экрана, она выполняет несколько вызовов вызова glutPassiveMotionFunc. Поэтому вместо того, чтобы телепортировать мышь, она перемещает ее туда на несколько движений. Эти движения обрабатываются и возвращают камеру в исходное положение.
Как проверить, что мышь была фактически перемещена, и она не была вызвана функцией glutWarpPointer.
Я попытался не обрабатывать движения, если указатель находится посередине экрана, но это не помогает.
Я хочу, чтобы моя программа работала на Linux и Windows, поэтому я не могу использовать функции, специфичные для ОС.
ли FreeGLUT гарантированно вызвать функцию обратного вызова мыши внутри вызова 'glutWarpPointer'? –
Он, кажется, не вызывает обратный вызов мыши из вызова glutWarpPointer. Чтобы выполнить эту работу, вам придется игнорировать следующий обратный вызов, предполагая, что он вызван glutWarpPointer и установите значение isWarpingPointer равным false. Не идеально, но грубо работает. – Richy321