【问题标题】:Why is this GLFW program not polling for joysticks?为什么这个 GLFW 程序不轮询操纵杆?
【发布时间】:2016-03-08 11:31:53
【问题描述】:

我在一个机器人项目中使用 GLFW 记录操纵杆的状态,遇到了一些奇怪的事情。

在运行 10.11.3 的 Macbook Air 上,GLFW 仅在程序开始时返回操纵杆的状态。但是,文档声称每次调用操纵杆函数时都会更新状态。使用操纵杆存在和操纵杆名称功能仅返回原始状态。

我不能透露我的代码。但是,我正在使用 ImGui,其中一个示例程序就足够了。要重现该问题,请运行具有以下更改的“opengl3_example”项目:

ImGui_ImplGlfwGL3_NewFrame(); 行之后,添加:

for (int i = 0; i < 15; i++)
{
    if (glfwJoystickPresent(i) != GL_TRUE)
    {
        printf("There are %d joysticks detected.\n",i); break;
    }
}

在我的例子中,如果程序在没有附加操纵杆的情况下启动,并且在程序开始运行后插入一个,它会声称仍然有 0 个附加操纵杆。问题超出了该功能,因为按钮和轴状态也没有更新。

我正在使用从源代码编译的最新 GLFW 3.1.2。请给我建议。

编辑:如果您想知道会发生什么,请查看 2:09 时间戳上的视频 https://www.youtube.com/watch?v=mx0IUbxAQ34

编辑:我尝试了一个不同的库,它可以正确检测到操纵杆。​​p>

提前致谢。

【问题讨论】:

  • 如果在运行程序之前连接了摇杆,轴和按钮状态是否正确更新?
  • 轴状态没有正确更新,事实上,至少对于 GLFW 检测到的第一个操纵杆。它显示了数组中的四个轴,都包含浮点数 138690176035340265469942380959367168.000000 或非常相似的东西,总是从 1386 开始。其他操纵杆的所有其他轴都是 0。在程序期间,这些值永远不会改变或更新。
  • joysticks测试有同样的问题吗?
  • joysticks 测试工作,奇怪。我尝试将代码导入我的 C++ 项目,但失败了。我不知道为什么会这样,只能想到两个原因:我的 make 系统失败或无法在 C++ 上执行。我会进一步研究这个;帮助表示赞赏。 @elmindreda
  • 好的,我发现了一些新东西。如果我使用提供的 cmakelists.txt 编译测试,则操纵杆测试有效。如果我输入 cc pkg-config --cflags glfw3 -o main joysticks.c ../deps/glad.c pkg-config --static --libs glfw3 -I ../deps -DGLFW_TRUE=1 (对不起,我无法编码格式化),那么操纵杆测试失败。为什么会发生这种情况? @elmindreda

标签: c++ polling glfw joystick


【解决方案1】:

事实证明,自制软件上的 GLFW 版本存在错误。多么虎头蛇尾。

由于某种原因,当我从源代码安装时,它没有覆盖自制软件已安装的二进制文件。这让我认为这是代码的问题。

不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多