Отличается поведением клавиши Shift от других в GLFW - PullRequest
0 голосов
/ 30 апреля 2018

Я использую GLFW для 3D-графики. Я пытаюсь реализовать схему нормального движения, где WASD - горизонтальное движение, пространство вверх, а смещение вниз.

Все клавиши, кроме, возвращаются при нажатии, но дерьмо возвращается только один раз при нажатии и один раз при отпускании.

Это означает, что если я нажму и удерживаю пробел, я буду непрерывно двигаться вверх, пока не отпущу клавишу.

Но если я буду удерживать и нажимать Shift, я немного опущусь, и я остановлюсь и не буду двигаться, пока я не отпущу, а затем немного подвинусь.

Мой обратный вызов клавиш выглядит следующим образом (c - объект камеры):

#define CAM_SPEED 0.2f
void static key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if(key == GLFW_KEY_W)
    {
        c.translateForward(CAM_SPEED);
    }
    if(key == GLFW_KEY_S)
    {
        c.translateForward(-CAM_SPEED);
    }
    if(key == GLFW_KEY_A)
    {
        c.translateSideways(-CAM_SPEED);
    }
    if(key == GLFW_KEY_D)
    {
        c.translateSideways(CAM_SPEED);
    }
    if(key == GLFW_KEY_SPACE)
    {
        c.translate(vec3(0,1,0)*CAM_SPEED);
    }
    if(key == GLFW_KEY_LEFT_SHIFT)
    {
        c.translate(vec3(0,-1,0)*CAM_SPEED);
    }
}

Так что код для всех ключей в основном одинаков, поэтому я не понимаю, почему shift ведет себя по-разному.

...