【问题标题】:Orbit a cube using mouse click and mouse drag (Opengl)使用鼠标单击和鼠标拖动来环绕立方体(Opengl)
【发布时间】:2020-08-02 14:59:10
【问题描述】:

我想在一个 3D 立方体上移动,按住鼠标左键单击 + 鼠标拖动。按住左键并拖动鼠标应该允许用户水平和垂直轨道。目前,我的代码允许出现 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;
}

这到底是什么问题?

另外,我是这种编程语言的新手,所以如果我没有提供任何东西,请告诉我。

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    我会觉得更安全:

    if ((currentClickLeft == true)&&(mouseDtected))
    

    但真正的问题是你有:

    lastMouseX = x;
    lastMouseY = y;
    

    之前:

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

    所以你的偏移量总是为零!之后你再做一次,所以我敢打赌你只是忘了删除它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多