C++中获取鼠标点击时光标坐标的OpenGL方法

8

我对GLFW的使用还比较新,想要在左键点击时将鼠标坐标输出到控制台。然而,我没有得到任何输出。

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    //ESC to quit
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
    {
        glfwSetWindowShouldClose(window, GL_TRUE);
        return;
    }
    if (key == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS) 
    {
        double xpos, ypos;
        //getting cursor position
        glfwGetCursorPos(window, &xpos, &ypos);
        cout << "Cursor Position at (" << xpos << " : " << ypos << endl;
    }
}

1
为什么你要在键盘事件的回调函数中执行这个操作?如果你想要在鼠标按钮被点击时执行某些操作,那么你应该在鼠标按钮的回调函数中进行检查。 - t.niese
1个回答

13
你试图在键盘输入回调中获取鼠标输入。请注意,key 对应于 GLFW_KEY_* 值。你应该设置鼠标输入回调函数:

你正在尝试在键盘输入回调中获取鼠标输入。注意 key 对应于 GLFW_KEY_* 值。相反,你应该设置鼠标输入回调函数:

void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
{
    if(button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS) 
    {
       double xpos, ypos;
       //getting cursor position
       glfwGetCursorPos(window, &xpos, &ypos);
       cout << "Cursor Position at (" << xpos << " : " << ypos << endl;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接