我正在使用GLFW在机器人项目中记录游戏杆的状态,并且遇到了一些奇怪的事情。为什么这个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,从源代码编译。请告诉我这个。
编辑:如果你想知道应该发生什么,看看视频https://www.youtube.com/watch?v=mx0IUbxAQ34在2:09时间戳。
编辑:我试过了一个不同的库,它检测到正确的游戏杆。
在此先感谢。
如果在执行程序之前连接棒,轴和按钮状态是否正确更新? –
轴状态无法正确更新,事实上,至少对于GLFW检测到的第一个操纵杆而言。它显示了阵列中的四个轴,均包含浮点数138690176035340265469942380959367168.000000或类似的东西,总是以1386开始。其他操纵杆的所有其他轴都是0.在编程期间,值永远不会更改或更新。 –
“游戏杆”测试是否有同样的问题? – elmindreda