opengl 小型发动机GLFW输入的处理

jjjwad0x  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(103)

使用learnopengl.com开发一个小型引擎,但过了一段时间,我仍然无法找到处理输入的最佳方法。
当然,我可以按照指南并使用它们的功能:

void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
    if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}

字符串
但是,我正在寻找一个更简单的方法:

if(key_a.isPressed)
{
    ...
}


另一个挑战是能够在类的不同区域使用这些代码,而不是将所有输入都推到key_callback函数中。

  • 我对C++相当陌生,也许只有几个月的经验,但我绝对不是新手 *
wbrvyc0a

wbrvyc0a1#

您可以使用glfwGetKey来获取特定键的状态。

int state = glfwGetKey(window, GLFW_KEY_A);

字符串

rta7y2nd

rta7y2nd2#

这是我过去如何做的一个例子。

int main(){
    ...
    glfwSetKeyCallback(glfwWindow, Input::KeyCallback);
    Input::IsPressed(GLFW_KEY_ESCAPE)
    ...
}

class Input {
private:
    static std::vector<int> Input::m_pressed(400,0);
public:
    static void Input::KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods)
    {
        Input::m_pressed[key] = action;
    }
    static bool Input::IsPressed(int key)
    {
        return (bool)Input::m_pressed[key];
    }
}

字符串

相关问题