我有一个在OSX 10.12.3下使用GLFW的OpenGL应用程序。
我运行它的50%的时间它工作正常。从我的主循环调用glfwPollEvents()
时,鼠标事件会正确调用鼠标回调。
但是,即使在前台正确创建窗口,其他50%的时间也不会接收普通鼠标事件。主循环正在运行,但未调用鼠标事件回调。如果我双击(大约0.1秒内两次点击),则事件回调会按预期接收4个事件。但是单击鼠标就没有收到任何信息。
在主循环中glfwGetWindowAttrib(window, GLFW_FOCUSED)
在代码工作时返回1,在不工作时返回0。在创建窗口后添加glfwFocusWindow(window)
似乎无法改变任何内容。
如果我将焦点切换到其他应用程序并切换回来,那么我的应用程序就会开始正确接收事件。
我使用过使用自制软件构建的GLFW 3.1.2,以及直接从github克隆构建的GLFW 3.2.1。无论如何,我都有同样的行为。
有一段时间我认为glfwWindowHint(GLFW_FOCUSED, 1)
解决了我的问题,但在第10次发布后,问题又回来了。
我希望避免发布我的代码(其glfw调用主要来自教程)并且我希望有人能够认识到我所描述的症状是我所犯的一些明显错误。双击行为似乎是一个很大的线索。