如何 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_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) {
我的程序有一个摄像头,当鼠标移动时 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_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) {