C++ 使用鼠标单击和鼠标拖动动态观察立方体(Opengl)

C++ 使用鼠标单击和鼠标拖动动态观察立方体(Opengl),c++,opengl,C++,Opengl,我想在按住鼠标左键单击+鼠标拖动的三维立方体周围移动。按住鼠标左键并拖动鼠标应该允许用户水平和垂直地动态观察。目前,我的代码允许显示3D立方体,但当我单击并拖动时,它不会环绕对象。这是我的密码: void UMouseClick(int button, int state, int x, int y) { if((button == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)){ cout << &qu

我想在按住鼠标左键单击+鼠标拖动的三维立方体周围移动。按住鼠标左键并拖动鼠标应该允许用户水平和垂直地动态观察。目前,我的代码允许显示3D立方体,但当我单击并拖动时,它不会环绕对象。这是我的密码:

void UMouseClick(int button, int state, int x, int y)
{
    if((button == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)){
         cout << "Left Mouse Button Clicked!" << endl;
         currentClickLeft = true; // this is my global variable
}

if((button == GLUT_LEFT_BUTTON) && (state == GLUT_UP)){
         cout << "Left Mouse Button Released!" << endl;
         currentClickLeft = false;
}

void UMouseMove(int x, int y)
{
   if(currentClickLeft == true && mouseDtected) {
        lastMouseX = x;
        lastMouseY = y;
        mouseDetected = false;

        mouseXOffset = x - lastMouseX;
        mouseYOffset = lastMouseY - y;

        lastMouseX = x;
        lastMouseY = y;

        mouseXOffset *= sensitivity;
        mouseYOffset *= sensitivity;

        yaw += mouseXOffset;
        pitch += mouseYOffset;

        front.x = 10.0f * cos(yaw);
        front.y = 10.0f * sin(pitch);
        front.z = sin(yaw) * cos(pitch) * 10.f;
}
void UMouseClick(int按钮、int状态、int x、int y)
{
如果((按钮==GLUT\U左按钮)和&(状态==GLUT\U向下)){

可以我会觉得更安全:

if ((currentClickLeft == true)&&(mouseDtected))
但真正的问题是你有:

lastMouseX = x;
lastMouseY = y;
之前:

mouseXOffset = x - lastMouseX;
mouseYOffset = lastMouseY - y;
所以你们的偏移量总是零!!!在这之后你们再做一次,所以我打赌你们只是忘了删除它