位置: 编程技术 - 正文

Qt新渲染底层Scene Graph研究(一)(qt渲染机制)

编辑:rootadmin
Qt新渲染底层Scene Graph研究(一)

推荐整理分享Qt新渲染底层Scene Graph研究(一)(qt渲染机制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:qt渲染引擎,qt渲染机制,qml图形渲染,qt 渲染,qml图形渲染,qt gpu渲染,qt gpu渲染,qt3d渲染,内容如对您有帮助,希望把文章链接给更多的朋友!

Qt 5提出了一个新的渲染底层,以替代Qt4时期的Graphics View,这个渲染底层就是Scene Graph。其实这个底层的作用和Open Scene Graph是差不多的,但是由于是不同的团队进行开发的,所以两者没有必然的联系。Scene Graph主要利用OpenGL ( ES )2的渲染优势,在2D和3D以非常流畅的速度进行渲染,满足日益增长的界面效果需求,同时Scene Graph预留了各种各样的接口,满足大家定义显示和渲染效果的需要。

蒋彩阳原创文章,首发地址: 如果大家使用过Qt 5的Qt Quick模块,你会感觉QtQuick的画面渲染速度和效率比Qt 4的GraphicsView来说好很多。当然Qt Graphics View在指定OpenGL渲染context为OpenGL时,差距可能小一些,但也较为明显。这一块儿,主要在渲染部分精简了渲染堆栈,并且充分利用显卡加速,将渲染负担转移到GPU来进行,实现了负载均衡。由于Scene Graph是直接构建在OpenGL之上的,因此Scene Graph对于OpenGL开发者来说要熟悉一些,而从来没有接触过OpenGL开发的开发者就有些为难了,幸好Qt在其之上有QQuickPaintedItem等方便的类,它可以像QPainter那样对其进行渲染操作。当然源码对于这一部分的操作是极其复杂的,需要考虑很多情况,幸运的是这一部分运行起来很快,不会占用很长的渲染时间。而且对于库的使用者来说,相当轻松。

使用Qt的Scene Graph来开发应用,为了提升性能,要点是批量渲染。这是由OpenGL的特性决定的,因为通过OpenGL,将以往CPU串行的部分并行化,从而大大提升渲染效率,再加上OpenGL本质上是一个巨大的状态机,在进行批量渲染的时候,可以有效地减少OpenGL状态切换所带来的性能开销,同时OpenGL预留的一些状态,需要开发者有基本的认知,由于OpenGL是一个开放的标准,因此考虑到兼容性,其采用了C/S架构。C端即CPU部分,S端对应GPU。在顶点和纹理数据从C端传入S端之前,会在C端形成一个缓冲区(一说缓存),我们常说的VBO、FBO和PBO就是这一类缓冲区。正确地设置缓冲区的数量和大小,可以为应用程序的性能提升带来很大的帮助。

Qt的Scene Graph在Qt 5.1到Qt5.2时有一个质的飞跃,因为其内部采用了新的Scene Graph渲染器。在Qt中,渲染器是可以替换的,所以说Qt 5.1之前采用的渲染器和Qt 5.2采用的渲染器是很不一样的。Qt官方当时做了一个性能测试,测试表明,OpenGL的API调用次数得到了显著的降低。其中采用了很多先进的思想比如说纹理图集(TextureAtlas)。一句话,Scene Graph总体的目标就是批量、批量再批量。

最后,介绍一下如何使用环境变量来进行对Qt的Scene Graph进行可视化检测。Qt的Scene Graph通过QSG_VISUALIZE来检测其渲染。

1、 测试批量渲染

通过指定QSG_VISUALIZE=batches来检查批量渲染情况,相同颜色标明其作了批量渲染。场景的颜色数越少,批量渲染就越好,渲染的效率就越高。

Qt新渲染底层Scene Graph研究(一)(qt渲染机制)

2、 测试裁剪情况

通过指定QSG_VISUALIZE=clip来检查裁剪情况。因为Item有一个clip的选项,如果打开的话,那么会通过较鲜艳的红色斜线显示出来。图中左上角的图像表示设置了Item::clip = true。

3、 测试全景绘制效果

这是一个非常直观且非常炫的效果。通过指定QSG_VISUALIZE=overdraw来检查在三维视图中各个图元的显示情况。所显示的图元都集中在x∈[0,Screen.width],y∈[0,Screen.height],z∈[0,stackLayer](其中stackLayer为Item堆叠的个数)的立方体中。如果发现自己创建的Item没有在视口中显示,看看在这种情况是不是跑到视口外面去了呢。

所用的程序均来自我制作的全平台独立游戏《十日驱&#;记》。下载链接参见:这里

GLWallpaperService分析一 WallpaperService是用来实现动态壁纸的服务,使用WallpaperService的典型方式是实现自定义的继承自WallpaperService的动态壁纸类。并实现它的WallpaperService.Engine。

Qt新渲染底层Scene Graph研究(二) Qt新渲染底层SceneGraph研究(二)上一篇文章初步介绍了Qt新渲染底层SceneGraph,我们该如何利用这个框架为应用程序增添绚丽的效果呢?首先,我们要明

在win7环境下安装Qt配置Opencv 安装Qt配置Opencv并不是件容易的事,并且在win7环境下更麻烦。不过我们还是因为没有彻底的搞懂其中的原理,所以才安装的费劲。其实网上有很多安装

标签: qt渲染机制

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

上一篇:【OpenGL】理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式(opengl详解)

下一篇:GLWallpaperService分析一

  • 初级职称经济法目录
  • 私立幼儿园需要纳税吗
  • 纳税申报的基本内容有哪些
  • 水利建设基金按照增值税征收
  • 消防工程改造怎么做账务处理
  • 平均股东权益在利润表中怎么看
  • 建筑业收到预收款预缴增值税
  • 报价含税和不含税哪个划算
  • 采购普通发票和专用发票的区别
  • 房地产企业拆迁补偿怎么做账
  • 业务分成方案
  • 公司租房子出去物业费可以代付吗
  • 实收资本重复交的印花税可以申请退税吗?
  • 逃避缴纳税款征管法第几条
  • 劳务费增值税专用发票虚开一万元怎么补救
  • 对公账户的利息收入如何入账
  • 预算会计的基本等式为
  • 企业所得税资产总额怎么算出来的呢
  • 企业稀释股份
  • 个人独资企业还是个体户好
  • 可全额扣除的公益性捐赠支出
  • 苹果mac dns设置
  • 合并报表六大抵消分录通俗理解
  • 物业公司监控一般保留多久
  • 苹果电脑进入安全模式按什么键
  • 如何计算经营性负债
  • srv.exe病毒
  • 发票章盖的不清楚可以在旁边再盖一个吗
  • 其他应付款余额在借方表示什么意思
  • 落枕怎么办怎么治疗
  • load与initialize
  • 注销公司财务报表范本
  • 加计扣除减免政策
  • 朝圣者将风马旗扔向甘登寺上方的空中为新年祈福,中国西藏 (© Ian Cumming/plainpicture)
  • php 文件管理系统
  • laravel sqlserver
  • php 提交表单
  • 增值税一般纳税人登记管理办法
  • docker 容器
  • 汇编语言a命令怎么用
  • 保险公司应收保费汇报范文
  • python中函数的用法
  • 做工程没钱了可以贷款吗
  • 企业所得税报表怎么更正
  • 根据不同资产涉及的税有哪些
  • 上季度的发票开出去了可以作废吗
  • 合并范围外关联方是什么
  • syslog使用
  • 救护车车船税优惠政策
  • 商业承兑汇票在网银上怎么查询
  • 个人经营所得税率
  • 建筑公司可以开3个点的专票吗
  • sql server 2008数据库没有备份文件恢复
  • 权益法和成本法的适用范围
  • 注册资金的多少有什么影响
  • 代扣代缴境外增值税怎么申报
  • 专票多长时间
  • 生产成本核算的步骤
  • 会计已入账是什么意思
  • 同城票据交换差额户金额从哪得来的
  • 购买税盘全额抵扣会计分录
  • 代理出口业务会计分录
  • sqlserver数据库建库建表
  • win8怎么格式化硬盘
  • mac连不上无线网络
  • win10系统怎么快速启动
  • win10极限精简版 200m
  • unity3d 碰撞
  • opengl三维场景
  • 运行shell脚本命令 sh
  • javascript还有人用吗
  • 基于python语言
  • 提出好的建议
  • css图片渐变效果
  • 安卓app压力测试
  • 非营利组织认定条件
  • 财产租赁包括哪些财产
  • 如何在国税电子税务平台为员工办理定制社保卡
  • 预交增值税税款退税流程
  • 车船税代收有发票吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设