Scene Graph 小记(Qt5)

Scene Graph 小记(Qt5)

在Qt5中,传统的QWidget系列,仍然使用BackStoring技术,但新的Qt Quick2,将使用Scene Graph。后者能更好地发挥GPU的性能,但是移植QWidget到这上面来的话,工作量似乎又太大。所以...

本文: 跟随 官方blog,简单了解 Scene Graph

背景:硬件加速

显卡按显存架构可分两类:

  • UMA(Unified Memory Architecture)统一内存体系结构,使用部分的电脑主内存作为显存
  • 非UMA,使用独立的显存。

显卡按其支持的图形操作可以粗略分为:

No acceleration (framebuffer only)

常见于嵌入式设备中

Blitter & alpha-blending hardware

在PC中不多见了
仍用于嵌入式

Path based 2D vector graphics

取代前者(?)

Fixed-function 3D

老式的PC机中,被后者取代

Programmable 3D

 

这样以来2*5=10,将有10中情况了。对此,Qt曾这样规划,每种情况对应一个paint engine。

 

UMA

非UMA

None

Raster

Raster*

Blitter

DirectFB

DirectFB**

2D vector

OpenVG***

OpenVG***

Fixed-3D

OpenGL (ES) 1.x

OpenGL (ES) 1.x

Programmable-3D

OpenGL (ES) 2.x

OpenGL (ES) 2.x****

使用OpenGL引擎

引入了!OpenGL2,但是看来,在当前的这种graphics stack(Backstoring)下,性能不太令人满意。

Scene Graph出场

在做了种种努力之后。官方决定后退一步,然后看看如果采用一种新的模型会得到些什么。这个新模型就是 Scene Graph,它是由一系列节点构成的树

  • GeometryNode

  • TransformNode

  • ClipNode

然后使用Renderer的子类遍历这个类并渲染它。

几个月后,已可以将QML建立在Scene Graph的基本结构之上。此时特点:可以见到

  • QtSceneGraph 这个库

  • qmlscene 这个可执行文件

今年5月底,QML Scene Graph 进入Qt5源码仓库的master分支。

后续

和Qt Quick关系太大了,暂时看不懂。只好先到这儿了...

         如果设备没有支持Opengl ES2.0,只支持ES1.0,那么在Qt5里面QML是否还能工作呢?编译时候应该怎么选择呢回复liuzh_szz:这个我也不清楚,不过,Thiago     Macieira(QtCore的维护者),昨天在邮件列表中有下列表述:
  1. The workaround for systems that don't meet the minimum requirements is to  
  2. upgrade. Running brand, new and bleeding edge Qt 5 on an old system is not a  
  3. target for us. Simply upgrade -- at the very least the requirements. 
谢谢!backstore和双缓冲不是一个概念。backstore只是为了更快的重绘,以及更好的实现半透明效果
BackStoring是什么东西?是不是就是双缓冲啊?
回复zhezhelin:可以这么认为吧。我也说不清楚(Qt4.0没有用这个东西也是双缓冲),这里面的两个图或许清楚一些:http://blog.csdn.net/dbzhang800/article/details/6835722

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值