Qt+OpenGL实现正方体旋转平移放大缩小,以及六个面贴不同图片

这篇博客介绍了如何在Qt环境下利用OpenGL实现正方体的旋转、平移、放大缩小功能,并展示了如何为正方体的六个面贴上不同的图片。作者基于Qt5.4.2MSVC 2010和OpenGL 32-bit进行开发,并警告QT5.5可能不支持OpenGL。内容中包含旋转和平移的实现代码,以及从NeHe教程中借鉴的正方体绘制和贴图技巧,特别提到了QGLWidget::convertToGLFormat()在将QImage转换为OpenGL格式中的应用。
摘要由CSDN通过智能技术生成


最基础的随便写的错了不要怪我

环境: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);
 
放大缩小
glTranslatef(0,0,m_roll);

以上放在 paintGL ()里


鼠标控制函数

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 </
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值