资源简介
本程序由QT+OpenGL开发而成,能以点,线,面,平滑表面等方式显示模型,支持自由旋转,缩放,拖动,能检查模型是否完整,并自动补全模型,能读取ascii编码的obj模型和CAD模型
代码片段和文件信息
#include
#include
#include
#include “math.h“
//#include
#include “glworkplace.h“
GLWorkplace::GLWorkplace(QWidget *parent)
: QGLWidget(parent)
{
timer = new QTimer(this);
modified = false;
}
GLWorkplace::~GLWorkplace()
{
//glDeleteList(obj);
for(int i=0;i deleteTexture(texture[i]);
}
void GLWorkplace::initializeGL()
{
stopSign = 0; //stopSign=1则不能加载文件
xrot=0;
yrot=0;
zrot=0;
xsig=ysig=zsig=0;
showAxis = true;
showBox = false;
showNormals = false;
texturesOn = false;
isSmooth = false;
editMade = NONE;
editDraw = false;
otfselectionType = TWO;
textureNum = 0;
infoBar = false;
scanRatio = 0;
pointSize = 1.0f;
lineWidth = 1.0f;
paintType = F; //初始化作图模式为三角形面
om = new CobjectModel;
QWidget::setMouseTracking(true);//开启鼠标跟踪,若为true则当鼠标不按下按钮也能触发mouseMoveEvent()
cfps = 0;
//************置matrix_rotate为单位矩阵用于trackball保存动作后的矩阵**********
glPushMatrix();
glLoadIdentity();
glGetDoublev(GL_MODELVIEW_MATRIX matrix_rotate);
glPopMatrix();
//*****************************************************************************
glEnable( GL_TEXTURE_2D );
//启动纹理贴图
glClearColor(0.0f0.0f0.0f0.0f);
glClearDepth( 1.0 );
//设置深度缓存
//glEnable( GL_DEPTH_TEST );
//glDisable( GL_DEPTH_TEST );
//启用深度测试
glDepthFunc( GL_LEQUAL );
//所作深度测试的类型
glClearStencil(0.0f);
glEnable(GL_STENCIL_TEST);
//使用0表示清除模版,启用 模版测试
//glHint( GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST );
//纹理压缩GL_FASTESTGL_NICESTGL_DONT_CARE并使纹理与模型颜色混合
//反走样*************************
glEnable (GL_LINE_SMOOTH);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA);
glHint (GL_LINE_SMOOTH_HINT GL_DONT_CARE);
//*********************************************
//************消除多边形背面*****************
//glCullFace(GL_BACK);
//glFrontFace(GL_CCW);
//glEnable(GL_CULL_FACE);
//*******************************************
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
//glLightfv( GL_LIGHT1 GL_SPECULAR lightSpecular );
glLightfv( GL_LIGHT0 GL_AMBIENT light0.ambient );
//环境光
glLightfv( GL_LIGHT0 GL_DIFFUSE light0.diffuse );
//镜面光
glLightfv( GL_LIGHT0 GL_SPECULAR light0.specular );
glLightfv( GL_LIGHT0 GL_POSITION light0.position );
//灯光位置
//glLightModelfv(GL_LIGHT_MODEL_COLOR_CONTROL GL_SEPARATE_SPECULAR_COLOR);
glEnable(GL_LIGHT0);
//开启灯光
glEnable(GL_COLOR_MATERIAL);
//起用本身颜色混合
glShadeModel(GL_SMOOTH);
//平滑阴影
//**************融合****************
//glEnable( GL_BLEND );
//glBlendFunc( GL_SRC_ALPHA GL_ONE );
//glColor4f( 1.0 1.0 1.0 0.5 );
//glColor4f(0.1f 0.3f 0.3f 0.5f);
//**********************************
obj = makeobject();
//objfw = makeframework();
//*******************透视投影*****************
glMatrixMode(GL_PROJECTION);
//glMatrixMode(GL_PROJECTION)指明接下来的两行代码将影响projection matrix(投影
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 379904 2008-11-04 20:52 3DLab\3DLab.ncb
文件 388 2002-03-03 22:51 3DLab\3DLab.pro
文件 20759 2019-05-03 21:15 3DLab\3DLab.pro.user
文件 724 2007-05-26 16:48 3DLab\3DLab.qrc
文件 875 2008-11-04 20:51 3DLab\3DLab.sln
文件 874 2007-05-15 16:33 3DLab\3DLab.sln.old
..A..H. 33280 2008-11-04 20:52 3DLab\3DLab.suo
..A..H. 35840 2007-06-14 10:11 3DLab\3DLab.suo.old
文件 17648 2008-11-04 20:51 3DLab\3DLab.vcproj
文件 15699 2002-03-03 22:51 3DLab\3DLab.vcproj.8.00.old
文件 1433 2008-11-04 20:52 3DLab\3DLab.vcproj.DEVELOP-4F9E29B.xuyangjie.user
文件 1407 2007-06-14 10:11 3DLab\3DLab.vcproj.PP.LimiT.user
文件 29451 2007-05-26 16:10 3DLab\glworkplace.cpp
文件 5613 2007-05-20 20:30 3DLab\glworkplace.h
文件 26443 2007-05-28 05:36 3DLab\glworkplace_Runtime.cpp
文件 1339 2005-12-15 01:07 3DLab\images\copy.png
文件 1323 2005-12-15 01:07 3DLab\images\cut.png
文件 2107 2006-06-18 23:50 3DLab\images\delete_face.png
文件 1296 2007-05-26 16:53 3DLab\images\fixholes.png
文件 1205 2007-05-26 16:54 3DLab\images\fixpoints.png
文件 1416 2006-01-02 16:42 3DLab\images\flat.png
文件 3447 2006-01-02 16:42 3DLab\images\flatlines.png
文件 7358 2007-05-15 13:39 3DLab\images\icon.ico
文件 6013 2007-02-04 19:21 3DLab\images\lightposition.png
文件 852 2005-12-15 01:07 3DLab\images\new.png
文件 4655 2007-02-04 19:20 3DLab\images\no_edit.png
文件 2221 2005-12-15 01:07 3DLab\images\open.png
文件 1745 2005-12-15 01:07 3DLab\images\paste.png
文件 1387 2006-01-02 16:42 3DLab\images\points.png
文件 3512 2006-01-02 15:42 3DLab\images\save.png
............此处省略60个文件信息
- 上一篇:算法设计与分析.pdf
- 下一篇:DXPerience 11.2.5 汉化+破解
相关资源
- 基于ARM_linux多媒体播放器的Qt源码
- Qt实现的Windows远程控制软件服务器端
- 辉光管时钟全套开源资料 PCB 源码 5
- 远控源码_模块_键盘记录功能齐全
- 入侵检测实验源码.rar
- 基于STM32的MQ-3酒精浓度检测源码
- 某集团公司检测系统全部源码
- Qt实现的多客户端
- cf辅助源码
- 屏幕取词源码-可二次开发
- 游戏找CALL和基址图文教程+源码
- 微商城小程序前台源码
- bootstrap3.0.0 教程+源码+中文手册
- VC项目源码Monitor注册表获取EDID解析显
- STM32+MQTT协议功能实现测试demo
- 木马源码,远程控制源码
- Delphi版自动升级程序及源码
- bbs论坛源码 数据库 静态页面
- 使用DirectShow驱动H264/265格式输出的U
- OFDM DSP源码
- 学生MIS信息管理系统源码
- 太阳线直销v4升级版
- qt双缓存实时曲线 可监测数据波动等
- PB大众医院门诊收费系统
- 企业网站[前台+后台]源码
- 基于Qt5图形视图框架的俄罗斯方块
- 权限管理系统源码
- 工单管理系统源码
- 网站流量统计系统源码
- 用QT写UART串口曲线变化
评论
共有 条评论