为什么鼠标没有GLFW_REPEAT?

时间:2017-08-02 03:53:03

标签: c++ glfw

使用鼠标按钮保持此类功能似乎很自然,但此功能仅适用于关键事件。根据glfw文档:

  

#define GLFW_REPEAT 2

     

按键被按下直到重复。

但按下和释放按钮,我们可以解决键盘和鼠标输入问题。

  

#define GLFW_PRESS 1

     

按下了键或鼠标按钮。

     

#define GLFW_RELEASE 0

     

已释放键或鼠标按钮。

我想知道是否有针对此问题的解决方法。此外,为什么用鼠标忽略了这个功能。

1 个答案:

答案 0 :(得分:4)

问问自己,GLFW_REPEAT触发的频率是多少?正确答案是此频率取决于您的用户设置。如果您持有字符键,它正是在任何应用程序中任何输入字段中出现字符的频率。因此GLFW_REPEAT的唯一目的是在应用程序中实现打印并使其与计算机上的所有其他应用程序保持一致。你绝对不应该使用GLFW_REPEAT来实现WASD控件和其他类似的东西。

为什么鼠标没有GLFW_REPEAT?因为可能没有具有重复鼠标输入概念的操作系统或桌面环境。如果你想要一个,只需记住处理按下和释放事件时鼠标按钮的状态,并生成重复"事件"手动使用所需频率。如果你愿意,可以每一帧都这样做,如果你有一个单独的输入线程,甚至更快。