【问题标题】:GLFW Doesn't Detect Mouse Movement Outside GLFW WindowGLFW 未检测到 GLFW 窗口外的鼠标移动
【发布时间】:2019-10-07 04:56:29
【问题描述】:

glfwSetCursorPosCallback() 只在鼠标在窗口内时运行,在窗口外时不运行。

今天早些时候,我让这个功能正常工作,但在过去的几个小时里,我一直难以发现问题。

static void cursorPositionCallback(GLFWwindow* window, double xpos, double ypos)
{
 std::cout << xpos << " : " << ypos << std::endl;
}

.......

 while (!glfw.WindowShouldClose())  
 {
     shader.ClearBuffers(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glfw.ResizeWindow(MVP); 
     glfwSetCursorPosCallback(glfw.GetWindowID(), cursorPositionCallback);
     Cube_IBO.DrawElementsInstanced(CubeIndices.size(), 2);
     glfw.SwapBuffers(); 
 }

GLFW 文档状态

"该函数设置指定的光标位置回调 窗口,当光标移动时调用”。

  • Windows 10
  • Visual Studio 16.0.4
  • GLFW 3.3 版

【问题讨论】:

  • 我似乎不明白你的问题是什么?正如您所说,GLFW 明确指出,它仅检测作为参数传递给回调 (docs) 的窗口内的移动。那么,这里的问题是什么?
  • 您可能还想尝试将glfwSetCursorPosCallback(...) 移到while 循环之前。
  • 根据此线程:stackoverflow.com/questions/45265543/… 在 Mac 上检测到鼠标移动到窗口外,但在 Windows 上检测不到。这个功能在 GLFW 窗口之外对我 (Windows) 不起作用,但在此视频中起作用:youtu.be/EE5cS8EMT78?t=38 (Mac) 似乎证实了这一点,但我仍然不是 100% 确定。

标签: c++ visual-studio opengl glfw


【解决方案1】:

GLFW 只会在光标放在 GLFW 窗口内时检测鼠标移动,正如您所说,GLFW 文档说明了这一点。

"该函数设置指定的光标位置回调 窗口,当光标移动时调用”。

..指定窗口的..除非你用的是Mac

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 2022-09-25
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2021-05-15
    相关资源
    最近更新 更多