2016-03-08 53 views
0

我正在使用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时间戳。

编辑:我试过了一个不同的库,它检测到正确的游戏杆。

在此先感谢。

+0

如果在执行程序之前连接棒,轴和按钮状态是否正确更新? –

+0

轴状态无法正确更新,事实上,至少对于GLFW检测到的第一个操纵杆而言。它显示了阵列中的四个轴,均包含浮点数138690176035340265469942380959367168.000000或类似的东西,总是以1386开始。其他操纵杆的所有其他轴都是0.在编程期间,值永远不会更改或更新。 –

+1

“游戏杆”测试是否有同样的问题? – elmindreda

回答

0

事实证明,自制软件上的GLFW版本被窃听。什么是反顶。

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

不是。