GLFW输入状态
GLFW Input States
我很难使用GLFW的输入系统,弄清楚如何让它按我想要的方式工作,所以我找到了更有经验的人来获取智慧。使用GLFW 3。
有3种状态0释放、1按下和2重复。这正是我想要的,只是按键状态从按下到重复大约需要一秒钟的时间才能改变。理想情况下,我希望它只在1帧内处于"按下"状态,然后变为重复状态。
目标:能够根据我的密钥的状态轻松调用函数,如下所示:
-
按下点击(做一次)
-
重复连续(每帧)
-
发布不响应
链接
请查看上面链接上的文件,让我知道是否有其他方法。或者这种方法本身就是垃圾,就像我做的那样?谢谢大家,所有的反馈和帮助都得到了认可。
一种方法是简单地忽略"repeat"事件,只处理"press"answers"release"事件。
当您获得"按下"事件时,设置一个标志,并清除"释放"事件上的标志。然后只需在每帧中检查此标志。
在"按下"answers"重复"之间有一个延迟是非常重要的。大多数人都无法按下和释放一个键,因此你的游戏只会记录按下的键,刚好一帧。少数有能力做到这一点的人不可能始终如一、准确无误。
因此,用户将永远无法"做一次"。他们将对多帧进行此操作。这通常很糟糕。
此外,按压、保持和重复之间存在概念上的差异。按住就是当你按下键时发生的事情。重复是一种由操作系统管理的功能(这就是为什么GLFW没有为您提供设置重复率的方法)。按键重复通常用于文本输入(GLFW无论如何都会通过其基于文本的回调为您处理)。
本质上,你应该忽略它。在游戏中,一个键有4种可能有用的状态:未按下、刚刚按下、被按住和刚刚释放。您可以从按钮的先前状态(可以存储)和回调提供的按钮的当前状态推断出这一点。
如果你只想在按钮"刚刚按下"时采取行动,那么你需要知道该按钮在前一帧中没有按下。如果现在按下了该键,但没有在上一帧中按下,请执行该操作。
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 程序终止,状态为 -1073741510 在 for 循环的中间,将输入分配给二维数组
- 什么是内部::状态::输入,并且在中间定义了什么
- 发送输入使系统进入睡眠状态
- C++在保存受用户输入影响的变量的状态时使用临时变量或类变量
- 将状态的输入转换为缩写
- 从直接输入和 GetDeviceState() 接收密钥状态 (C++)
- 如何根据两种输入状态编写输出结果
- GLFW输入状态
- 正则表达式库,用于维护状态,逐个字符接受输入,并在找到匹配时返回true
- C shell输入重定向保持打开状态
- 如何告诉如果shift是按下numpad输入与NumLock上?或者至少获得NumLock状态