【发布时间】:2014-05-16 23:27:40
【问题描述】:
我在 QGLWidget 类上有以下鼠标事件...
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
QPointF mousePosition = event->pos();
float dx = event->x() - lastPos.x();
float dy = event->y() - lastPos.y();
if (event->buttons() & Qt::LeftButton) {
setXRotation(xRot + 8.0 * dy);
setYRotation(yRot + 8.0 * dx);
} else if (event->buttons() & Qt::RightButton) {
xTrans += dx;
yTrans -= dy;
}
lastPos = event->pos();
}
paint GL 中的旋转可以正常工作,但不能翻译。我做错了什么...?
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(0.0, 0.0, -5.0);
glRotatef(xRot / 16.0, 1.0, 0.0, 0.0);
glRotatef(yRot / 16.0, 0.0, 1.0, 0.0);
glRotatef(zRot / 16.0, 0.0, 0.0, 1.0);
glTranslatef(xTrans, yTrans, 0.0f);
glScalef(scale, scale, scale);
//draw function here
glPopMatrix();
}
【问题讨论】:
-
您是如何以及在哪里绘制模型的?此外,按照您编写
mouseMoveEvent代码的方式,右边的按钮应该翻译您的模型,而不是左边的。 -
我在paintGL中绘制它..我有一个如图所示的drawfunction..
-
您是否尝试过将第一个 glTranslatef 参数更改为 (xTrans, yTrans, -5.0),并删除第二个 glTranslatef?
-
翻译不起作用是什么意思?它是朝错误的方向翻译,还是根本不翻译?
-
所以如果你用大数字调用glTranslatef,但它根本没有翻译,那么问题可能出在draw函数上。