обратный вызов pos курсора glfw возвращает неправильные значения - PullRequest
0 голосов
/ 14 марта 2019

Это функция обратного вызова glfwPollEvents () для курсора мыши и другой метод, который я использую для проверки того, насколько мой курсор перемещается между кадрами.

void Window::HandleMouse(GLFWwindow* window, double xpos, double ypos) {
        Window* window_ptr = static_cast<Window*>(glfwGetWindowUserPointer(window));
        if (window_ptr->mouse_first_moved) {
            window_ptr->xlast = xpos;
            window_ptr->ylast = ypos;
            window_ptr->mouse_first_moved = false;
        }
        window_ptr->xchange = xpos - window_ptr->xlast;
        window_ptr->ychange = window_ptr->ylast - ypos;
        window_ptr->xlast = xpos;
        window_ptr->ylast = ypos;
    }

    GLfloat Window::GetXChange() {
        static GLfloat change_x;
        change_x = xchange;
        xchange = 0;
        return change_x;
    }

Эти значения возвращаются GetXChange при вызове в рендере.цикл во время «встряхивания» одной мыши (я перемещал его довольно быстро вправо и влево, пытаясь сохранить постоянную скорость движения).Что они имеют в виду, так это то, что моя мышь покрыта осью х между одним кадром и другим.

12.0
4.0
59.0
8.0
3.0
1.0
-1.0
-2.0
-46.0
-64.0
-61.0
-47.0
-21.0

Моим первым предположением было то, что моя частота кадров не стабильна, но после проверки я обнаружил, что это не так.t the case.

В чем может быть причина такого расхождения?

...