Ubuntu glfw轮询获取按键事件

这种方法的使用方式如下:

复制代码
while (!glfwWindowShouldClose(window))
    {
        processInputs(window);
        ...
    }

processInputs中包含的要素和上面介绍的回调函数差不多,只是用到了另一个GLFW的函数glfwGetKey。最终效果上,这个函数返回任意时间某个键的状态,就是这个函数使得连续效果得以实现。processInputs可以这样实现:

复制代码
void processInputs(GLFWwindow* window)
{
    // move the camera
    if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS)
        camera_x -= camera_speed;
}

何时使用

  • 对按键速度要求高甚至是一直按着,需要连续效果

glfwGetKey被调用前键被松开了怎么办

除了用户的操作外,函数glfwSetInputMode也会影响到glfwGetKey的返回值。

void glfwSetInputMode(GLFWwindow* window, int mode, int value)

当mode为GLFW_STICKY_KEYS且value为GLFW_TRUE时,只要按下一个键,那么glfwGetKey返回的该键的状态一定是按下的,哪怕在glfwGetKey函数被调用前这个键又被松开了。也就是说,当我们只关心键是否被按下过、而不关心它是何时被按下的时,就可以设置这个状态。

相关推荐
orion571 天前
Missing Semester Class1:course overview and introduction of shell
linux
用户120487221611 天前
Linux驱动编译与加载
linux·嵌入式
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房2 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia3 天前
linux curl命令详解_curl详解
linux
扛枪的书生3 天前
Linux 网络管理器用法速查
linux
顺风尿一寸3 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode3 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫4 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux