• 大小: 123KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: qt  opengl  obj  

资源简介

具体实现,已经上传,内部有完整功能代码 加载效果已经发帖,物超所值

资源截图

代码片段和文件信息


#include “glwidget.h“
#include 
#include 
#include 
#include 
#include 

GLWidget::GLWidget(QWidget *parent)
    : QOpenGLWidget(parent)
      m_xRot(0)   m_yRot(0)    m_zRot(0)
{
    obj = _glReadOBJ(“target.obj“);
    //_glReadMTL(obj“Blank.mtl“);
    //Busto_Chappie
    model = new Model(QString(“Busto_Chappie.obj“));
}

GLWidget::~GLWidget()
{

}

void GLWidget::initializeGL()
{
//    connect(context() &QOpenGLContext::aboutToBeDestroyed this &GLWidget::cleanup);
    initializeOpenGLFunctions();
        gluLookAt(000  001  010);
}

void GLWidget::paintGL()
{
    static bool first_paint=true;
    if(first_paint){
        m_xRot = m_zRot = 0;
        //m_yRot = 180*16.0f;
        m_yRot = 0;
        first_paint = false ;
    }

    glClearColor(0.8 0.8 0.8 1);
    glColor3f(0.9 0.9 0.9);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    //glEnable(GL_CULL_FACE);       //前部图形透视
    glMatrixMode(GL_PROJECTION);
    glMatrixMode(GL_MODELVIEW);

    GLfloat lightPosition[] = { 50.0f -50.0f 100.0f 1.0f };
    glLightfv(GL_LIGHT0 GL_POSITION lightPosition);
    glEnable(GL_LIGHTING); //启用光源
    glEnable(GL_LIGHT0);   //使用指定灯光

    //if (obj)
    //    _glDraw(obj _GL_SMOOTH );  //_glDraw(obj _GL_SMOOTH | _GL_TEXTURE);         //_GL_COLOR _GL_FLAT _GL_SMOOTH
    if(model){
            model->set_xyz(m_xRot/16.0f  m_yRot/16.0f  m_zRot/16.0f);
            qDebug()<            model->render();
    }

}

void GLWidget::resizeGL(int w int h)
{
//    m_proj.setToIdentity();
//    m_proj.perspective(45.0f GLfloat(w) / h 0.01f 100.0f);
}

QSize GLWidget::minimumSizeHint() const
{
    return QSize(50 50);
}

QSize GLWidget::sizeHint() const
{
    return QSize(400 400);
}

static void qNormalizeAngle(int &angle)
{
    while (angle < 0)
        angle += 360 * 16;
    while (angle > 360 * 16)
        angle -= 360 * 16;
}

void GLWidget::setXRotation(int angle)
{
    qNormalizeAngle(angle);
    if (angle != m_xRot) {
        m_xRot = angle;
        emit xRotationchanged(angle);
        update();
    }
}

void GLWidget::setYRotation(int angle)
{
    qNormalizeAngle(angle);
    if (angle != m_yRot) {
        m_yRot = angle;
        emit yRotationchanged(angle);
        update();
    }
}

void GLWidget::setZRotation(int angle)
{
    qNormalizeAngle(angle);
    if (angle != m_zRot) {
        m_zRot = angle;
        emit zRotationchanged(angle);
        update();
    }
}

void GLWidget::mousePressEvent(QMouseEvent *event)
{
    m_lastPos = event->pos();
}

void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
    int dx = event->x() - m_lastPos.x();
    int dy = event->y() - m_lastPos.y();

    if (event->buttons() & Qt::LeftButton) {
        setXRotation(m_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5160  2019-08-22 12:19  qt_opengl_obj\glwidget.cpp
     文件        1873  2019-08-22 10:04  qt_opengl_obj\glwidget.h
     文件         461  2019-08-21 23:01  qt_opengl_obj\hellogl2.pro
     文件       23920  2019-08-22 21:52  qt_opengl_obj\hellogl2.pro.user
     文件        9176  2019-08-21 23:08  qt_opengl_obj\loadFile.cpp
     文件        2834  2019-08-21 23:12  qt_opengl_obj\loadFile.h
     文件        5690  2019-08-18 23:45  qt_opengl_obj\main.cpp
     文件        3208  2016-06-10 14:48  qt_opengl_obj\mainwindow.cpp
     文件         214  2019-08-21 23:12  qt_opengl_obj\mainwindow.h
     文件        4532  2019-08-22 12:24  qt_opengl_obj\model.cpp
     文件        2785  2019-08-22 10:48  qt_opengl_obj\model.h
     文件        2112  2019-08-19 17:12  qt_opengl_obj\transform.h
     文件        5416  2019-08-22 11:24  qt_opengl_obj\window.cpp
     文件         587  2019-08-21 23:13  qt_opengl_obj\window.h
     文件     1934602  2019-08-22 21:59  qt_opengl_obj\新建位图图像.bmp

评论

共有 条评论