2015-07-06 4 views
0

Я пытаюсь реализовать некоторые ключевые входы для своего приложения. Например, перемещение камеры. Я использую lwjgl. Так что я попытался это:Ввод клавиатуры OpenGL

if(key == GLFW_KEY_A && action == GLFW_PRESS){ 
        camera.translate(new Vector3f(+0.5f,0,-0.5f)); 
       } 

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

Так что я пытался что-то вроде этого:

if(key == GLFW_KEY_D && action == GLFW_PRESS){ 

        while(action != GLFW_RELEASE){ 
         a.getView().translate(new Vector3f(-0.5f,0,+0.5f)); 

        } 
       } 

который происходит сбой мое приложение из-за петли бесконечности.

Mabe кто-то может помочь мне с этим.

ответ

0

Я не знаком с GLFW, в частности, но нашел GLFW_REPEAT, который может быть тем, что вы ищете (документация на него, по меньшей мере, отсутствовала).

Если это не сработает, нередко использовать теневые регистры для ввода с клавиатуры, где вы обновляете состояние каждой интересующей клавиши всякий раз, когда они возникают. Затем вы можете просто предоставить функцию bool keyIsDown(keytype_t key);, которую вы можете опросить каждый кадр.

+0

Кажется, что 'int glfwGetKey (GLFWwindow * window, int key);' тоже может представлять интерес. – JBarberU

+0

это не работает для меня, все еще спасибо за ответ – greedsin

+0

он работает, когда я сохраняю состояние ввода keyborad в булевом массиве, THX для идеи – greedsin

Смежные вопросы