glfwSetCursorPosCallback()仅在鼠标位于窗口内部时运行。如果在GLFW窗口之外,则无法检测到鼠标移动。
今天早些时候,我可以正常使用此功能,但是在过去的几个小时中,我一直陷入困境以试图发现问题。
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