【发布时间】: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.cpkg-config --static --libs glfw3-I ../deps -DGLFW_TRUE=1 (对不起,我无法编码格式化),那么操纵杆测试失败。为什么会发生这种情况? @elmindreda