最基础的随便写的错了不要怪我
环境:Qt5.4.2MSVC 2010 OpenGL (32-bit),QT5.5没有OpenGL(好像是吧,我试了不能用)
QOpenGLWidget ,QOpenGLFunctions_1_0
旋转是按自带示例复制的
glRotatef(m_xRot / 16.0f, 1, 0, 0);
glRotatef(m_yRot / 16.0f, 0, 1, 0);
glRotatef(m_zRot / 16.0f, 0, 0, 1);
//下面两个是自己瞎写的功能还可以,适合初学者
平移
glTranslatef(m_xMove,0,0);
glTranslatef(0,-m_yMove,0);
放大缩小
以上放在 paintGL ()里glTranslatef(0,0,m_roll);
鼠标控制函数
void MyOpenglWidget::mousePressEvent(QMouseEvent *event)
{
m_lastPos = event->pos();
}
void MyOpenglWidget::mouseMoveEvent(QMouseEvent *event)
{
float dx = event->x() - m_lastPos.x();
float dy = event->y() - m_lastPos.y();
if (event->buttons() & Qt::LeftButton)
{
m_xMove+=dx/100;
m_yMove+=dy/100;
update();
}
if (event->buttons() & Qt::RightButton)
{
setXRotation(m_xRot + 8 * dy);
setZRotation(m_zRot + 8 * dx);
}
m_lastPos = event->pos();
}
void MyOpenglWidget::setXRotation(int angle)
{
qNormalizeAngle(angle);
if (angle != m_xRot) {
m_xRot = angle;
update();
}
}
void MyOpenglWidget::setYRotation(int </