我的程序有一个移动鼠标移动时移动/平移的相机。如果按住鼠标右键,如何才能移动/平移?
这是我移动/平移相机的功能。我尝试使用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;
}
}
不确定这是否重要,但这是我的鼠标回调。我的程序中有一个tweakbar。
static void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
{
// pass mouse data to tweak bar
TwEventMouseButtonGLFW(button, action);
}
答案 0 :(得分:1)
GLFW_MOUSE_BUTTON_RIGHT
和GLFW_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) {