位置: 编程技术 - 正文

Qt环境下利用OpenGL显示三维模型(qt搭建opencv)

编辑:rootadmin

推荐整理分享Qt环境下利用OpenGL显示三维模型(qt搭建opencv),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:qt opencl,qt如何配置opencv,qt调用opencv库,qt open gl,qt opencl,qt opencl,qt opencl,qt open gl,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在做一个利用Qt开发的小程序,其中一项功能是读取三维点云数据&#;式(如PLY、OBJ)数据,并利用OpenGL显示在程序窗口中。由于博主对OpenGL不太了解,只好参考相关的范例一步一步地进行开发。本文就是针对最基础的在Qt中使用OpenGL的相关知识进行一番梳理。

编程环境是Qt 5.3.2(MSVC ,bit)with opengl。

以下代码部分参考了C&#;&#; GUI Qt 4编程(第二版)中第章的范例,BTW,个人认为这本书对初学Qt的童鞋很有帮助。

首先是项目的建立,这里新建了一个Qt Widget Application,名叫Widget。并从QWidget基类继承,没有创建.ui文件。

创建了空的项目后,根据书中的实例添加了代码。另外在.pro文件中QT &#;= opengl。

widget.h文件如下所示:

widget.cpp如下:

main.cpp如下:这个范例能够显示一个四面体,利用鼠标左右键控制旋转,并能通过双击面设置每个面的颜色,运行结果如下图:Qt环境下利用OpenGL显示三维模型(qt搭建opencv)

程序分析:

一、窗口坐标系,分析认为图示窗口水平向右为X轴正向,窗口竖直向下为Y轴正向,指向窗口内部为Z轴正向,从draw()函数中P1~P4点的坐标可知,另外在面的描述中每个三角形三个角点的顺序都是顺时针(面向该面),没记错的话这样才能表示面的外表面。

二、为加载这个四面体,程序中采用了如下函数:其中glLoadName()的作用是替换堆栈顶部的那个&#;,从而为每次操作生成的物体提供一个唯一的编号(Name),通过qglColor(faceColors[i])命令,就将第i个面与第i号颜色对应起来。

glVertex3f的函数原型是:void glVertex3f(GLfloat x,GLfloat y,GLfloat z);这里x,y,z分别对应coords[i][j][0], coords[i][j][1], coords[i][j][2],例如i=0,j=0时就是P1点坐标(coords[0][0][0], coords[0][0][1], coords[0][0][2]),然后j&#;&#;,取到P2,再j&#;&#;,取到P3,从而构成一个面,面的颜色采用faceColor[0]。之后i&#;&#;,j又从0开始递增,继续取到P1,P3,P4……以此类推。由此可见,coords中点的排序是有规律的。三、改变面的颜色。这一功能主要是通过int Widget::faceAtPosition(const QPoint &pos)函数实现的。在鼠标双击后,将鼠标指针所在位置传递给该函数,在声明了一些变量后,函数执行了如下语句:

glGetIntegerv是一个用来获取参数的函数。宏定义GL_VIEWPORT说明这里获取的是视口的参数。The params parameter returns four values: the x and y window coordinates of the viewport, followed by its width and height. x、y的原点都是视口左下角,默认&#;都是(0,0),视口的长宽也就是所在窗体的长宽。返回的参数存入voewport四维GLint向量。

然后是:

glSelectBuffer的作用是为选择模式&#;建立一个缓冲区,MaxSize为缓冲区大小,buffer返回选择数据。

然后是:

gluPickMatrix定义了一个选择区域。函数原型为:void gluPickMatrix(GLdouble x,GLdouble y,GLdouble height,GLdouble width,GLint viewport[4]);其中x表示选择区域在窗口中的x坐标,在这里就是pos.x(),而需要注意的是选择区域y坐标为viewport[3] - pos.y(),height和width表示选择区域长宽,这里取5像素,实际验证表明,即使鼠标指针不在三角面上,但5X5像素的选择区域与面有交集,则也能选中该面。

glFrustum将当前矩阵乘一个透视矩阵。

Ubuntu下QtOpenGL无法正常使用GLU库的解决方法 本文来自

SDL2源代码分析8:视频显示总结 =====================================================SDL源代码分析系列文章列表:SDL2源代码分析1:初始化(SDL_Init())SDL2源代码分析2:窗口(SDL_Window)SDL2源代码

OpenGL 超级宝典学习,制作 圆柱,球体,花托,圆盘等多边体 #includeGLTools.h#includeGLMatrixStack.h#includeGLFrame.h#includeGLFrustum.h#includeGLBatch.h#includeGLGeometryTransform.h#includemath.h#ifdef__APPLE__#includeglut/glut.h#else#defineFREEGLUT_STATIC#in

标签: qt搭建opencv

本文链接地址:https://www.jiuchutong.com/biancheng/373152.html 转载请保留说明!

上一篇:在Xcode中使用GLUT开发OpenGL应用程序(xcode用法)

下一篇:Ubuntu下QtOpenGL无法正常使用GLU库的解决方法(ubuntu qtcreator)

  • 税收负担影响企业的利润吗
  • 房地产项目公司是什么意思
  • 教育行业税收优势分析
  • 转账支票有没有密码
  • 应纳税所得额为什么要减去60000
  • 减税后含税单价计算公式
  • 销项减进项余额在哪方
  • 会计没签字出纳付款违法么
  • 城市维护建设税是什么意思
  • 固定资产折旧年限
  • 生产车间用电产品有哪些
  • 工业企业提供劳务收入会计分录
  • 一般纳税人进项税额怎么算
  • 网上公司报税流程图
  • 行政单位维修工程规定
  • 退货但发票不冲销
  • 开具发票财务需要管理吗?
  • 工业企业税负率一般控制在多少?
  • 本地开的住宿费可以退吗
  • 发票认证勾选是一回事吗
  • 填写a201030减免所得税优惠明细怎么填
  • 预收账款的会计编码是多少?
  • 给别人代付
  • 发票丢了还可以重开吗
  • 劳务所得个税税率表
  • Win11怎么自定义鼠标指针图案
  • 清华同方笔记本怎么进入u盘启动
  • 基本户是否可以冻结
  • 抵扣农产品进项税时,也要抵扣运费吗
  • 优先股转化
  • 孚日山脉猞猁
  • Cusco Cathedral on the Plaza de Armas, Cusco, Peru (© sharptoyou/Shutterstock)
  • 加班费的计算基数包括补贴吗
  • 公司登记注册费每年都要交吗
  • vuecli非根目录打包
  • 盘盈的存货计入哪个科目
  • 附加税多交了怎么办理退税
  • php微信公众号开源框架
  • 损失函数是什么
  • 史上伟大电影
  • 软件开发费属于什么费用
  • 白酒贴牌酒是真酒还是假酒
  • 税收筹划类型有哪几种
  • 公司收到保险公司退保费怎么账务处理
  • 公司的资金管理模式是什么?
  • 出口合同的流程
  • 固定资产清理往报表哪列示
  • 合作社收到政府补贴会计分录
  • 劳务公司的成本有哪些
  • 固定资产属于净资产指的是什么
  • 固定资产的运输费和包装费计入
  • 劳务分包需要什么条件
  • 员工意外险的费用怎么算
  • 建筑公司没有资质可以注册建造师吗
  • 计提加计抵减额的会计处理
  • 产品是如何产生的
  • 主板不支持u盘装系统怎么办
  • mac系统怎么给文件夹设置密码
  • c盘esd是什么文件夹
  • deepin直接安装
  • 登录远程linux系统可以用的方法
  • winxp慢怎么办
  • win8开机进入开始界面
  • 如何彻底解决win10自动重启
  • windows7怎么给电脑加密码
  • linux服务器如何配置ip
  • 常用的加锁方式
  • css透明属性详解怎么写
  • css跑马灯效果
  • 创建一个批处理文件,其功能是在当前
  • 使用nodejs开发后端
  • vue的自定义组件
  • 利用python中的运算符可以编程解决你身边的哪些问题
  • java教程 视
  • 安置残疾人就业增值税即征即退优惠
  • 你家预收租金到哪里去了
  • 爱信诺开票系统怎么安装
  • 国家税务局何时上班
  • 没有税务备案,不用申报增值税
  • 银行扣账户维护费会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设