如何 move/pan 仅在按住右键时才使用 OpenGL 相机?

How to move/pan OpenGL camera ONLY if right click is held down?

我的程序有一个摄像头,当鼠标移动时 moves/pans。仅当按住鼠标右键单击时,如何才能将其设置为 move/pan?

这是我的moves/pans摄像头的功能。我尝试使用 GLFW_MOUSE_BUTTON_RIGHT 添加 if 语句,但它不起作用。

static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos)
{
       if (GLFW_MOUSE_BUTTON_RIGHT && GLFW_PRESS) {
              // variables to store mouse cursor coordinates
              static double previous_xpos = xpos;
              static double previous_ypos = ypos;
              double delta_x = xpos - previous_xpos;
              double delta_y = ypos - previous_ypos;

              // pass mouse movement to camera class
              g_camera.updateYaw(delta_x);
              g_camera.updatePitch(delta_y);

              // update previous mouse coordinates
              previous_xpos = xpos;
              previous_ypos = ypos;
       }
}

也不确定这是否重要,但这是我的鼠标回调。我的程序中有一个调整栏。

static void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
    {
        // pass mouse data to tweak bar
        TwEventMouseButtonGLFW(button, action);
    }

GLFW_MOUSE_BUTTON_RIGHTGLFW_PRESS 是使用

定义的宏
#define GLFW_PRESS 1

#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2

#define GLFW_MOUSE_BUTTON_2   1

因此 if (GLFW_MOUSE_BUTTON_RIGHT && GLFW_PRESS) { 在编译器的预处理步骤之后是 if( 1 && 1 ) {

您需要在鼠标按钮回调中存储鼠标按钮的当前状态,或者使用 glfwGetMouseButton:

查询状态
if ( glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) ==  GLFW_PRESS) {