【发布时间】:2010-10-26 09:14:31
【问题描述】:
使用 OpenGL /GLUT 如何检测是否同时按住两个键,例如“a”和“j”?
(此程序需要使用 OSX GCC、Windows GCC、Windows VS2005 编译,因此请不要依赖操作系统。)
【问题讨论】:
使用 OpenGL /GLUT 如何检测是否同时按住两个键,例如“a”和“j”?
(此程序需要使用 OSX GCC、Windows GCC、Windows VS2005 编译,因此请不要依赖操作系统。)
【问题讨论】:
尝试以下方法:
glutIgnoreKeyRepeat 仅获取物理keydown/keyup 事件glutKeyboardFunc 注册回调以监听keydown 事件。glutKeyboardUpFunc 注册一个回调监听按键事件。bool keystates[256] 数组来存储键盘按键的状态。keystates[key] = true。keystates[key] = false。(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])。朝那个方向看。虽然我没有测试过,但它应该可以工作。您可能还需要glutSpecialFunc 和glutSpecialUpFunc 来接收“特殊”键的消息。
另外,请注意 GLUT 确实是老东西了,还有更好的选择。
【讨论】:
如果您的意思是更简单且与 glut-independent 的输入函数,则通过“更好的选择”,然后使用 GetAsyncKeyState 函数...
【讨论】: