资源简介
具体实现,已经上传,内部有完整功能代码
加载效果已经发帖,物超所值
代码片段和文件信息
#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
相关资源
- 基于Qt实现的多人聊天
- 基于QT的三连棋井字棋游戏
- QT自定义风格qss得日历
- Qt动态进度条
- 用QT5写简单的串口调试工具
- QT实现摄像头采集图像并截图
- qt下人脸识别
- glaux库包含glaux.h和glaux.lib
- Qt自定义皮肤
- QT(5.6) 实现IP地址输入控件
- QT实现图片的二值化与灰度化
-
QT4 xm
l与QTableWidget的结合,QTableWid - QWidget加载QML界面,并通过信号槽交互
- S5PV210 友善之臂开发板 步进电机程序
- 基于QT开发的读取微软xbox手柄读写信
- 移远EC20 MQTT协议文档 英文
- 网上爬的某学院PyQt教学视频
- opengl通过键盘对3d图像进行颜色,光照
- QT计算器,画图,闹钟,秒表,倒计时
- QT开发的小程序:输入数字音乐简谱,
- GLM动态库、静态库和头文件OpenGL
- Qt 仿QQ图片查看器
- opengl函数大全,所有可用函数都在这
- Qt利用TCP实现客户端与服务器端的数据
- QT:一个简洁美观的自定义温度控件
- pyqt5实现的登录功能
- 配置pcl与Qt时的两个QVTKWidgetPlugin文件
- Qt做的简易计算器程序,有加减乘除功
- QT做的简易画板
- qt中文语言包
评论
共有 条评论