C++ 使用鼠标单击和鼠标拖动动态观察立方体(Opengl)
我想在按住鼠标左键单击+鼠标拖动的三维立方体周围移动。按住鼠标左键并拖动鼠标应该允许用户水平和垂直地动态观察。目前,我的代码允许显示3D立方体,但当我单击并拖动时,它不会环绕对象。这是我的密码: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
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;
所以你们的偏移量总是零!!!在这之后你们再做一次,所以我打赌你们只是忘了删除它