資源簡介
具體實現(xiàn),已經(jīng)上傳,內部有完整功能代碼
加載效果已經(jīng)發(fā)帖,物超所值

代碼片段和文件信息
#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
評論
共有 條評論