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函数被调用前这个键又被松开了。也就是说,当我们只关心键是否被按下过、而不关心它是何时被按下的时,就可以设置这个状态。

相关推荐
像风一样自由202034 分钟前
Ubuntu系统入门指南:常用命令详解
linux·运维·ubuntu
shall_zhao41 分钟前
安装OpenResty(Linux-Docker)
linux·docker·openresty
bits/stdc++.h1 小时前
Linux升级OpenSSH9.8版本步骤
linux·运维·服务器·ssh
常敲代码手不生1 小时前
UNIX IPC方法的分类
java·linux·服务器·tcp/ip·unix·信息与通信
不断进步的咕咕怪2 小时前
手动下载工具后设环境变量(ubuntu)
linux·运维·ubuntu
小龙在慢慢变强..2 小时前
Ubuntu22.04安装nginx
linux·服务器·nginx
WangMing_X3 小时前
linux入门到实操-4 linux系统网络配置、连接测试、网络连接模式、修改静态IP、配置主机名
linux·运维·服务器
SilentCodeY4 小时前
docker 安装 mysql5.7
linux·运维·mysql·docker·容器
シ風箏5 小时前
MinIO【部署 02】Linux集群版本及Windows单机版、单机多目录版、分布式版(cmd启动脚本及winsw脚本分享)
linux·windows·分布式·minio·文件存储系统
程序员黄老师5 小时前
Ubuntu 下载软件包时,提示 但是它将不会被安装E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
linux·运维·ubuntu