首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGLWidget比QWidget慢

QGLWidget比QWidget慢
EN

Stack Overflow用户
提问于 2013-10-07 20:32:20
回答 1查看 1.6K关注 0票数 2

这个问题主要是由题目决定的。我尝试了Qt的示例(二油漆),并注意到,如果我试图在QGLWidget上绘图,那么相同的代码会消耗更多的CPU能力,如果我试图简单地在QWidget上绘图,则会消耗更少的CPU能力。我认为QGLWidget应该更快一些。还有一个有趣的现象:在QGLWidget中,反混叠提示似乎被忽略了。

OpenGL版本: 3.3.0

那这是为什么?

EN

回答 1

Stack Overflow用户

发布于 2013-10-08 08:19:58

首先,请注意链接到的文档底部的文本:

该示例显示了在Widget和GLWidget中同时执行的相同绘制操作。GLWidget中呈现的质量和速度取决于系统的OpenGL驱动程序所提供的对多采样和硬件加速的支持程度。如果缺乏对其中任何一种的支持,驱动程序可能会返回到软件渲染器上,该软件呈现器可能会以质量换取速度。

撇开这一点不说,硬件渲染并不总是比软件渲染更快;这完全取决于渲染程序被要求做什么。

软件可以超过硬件的一个例子是,如果呈现的项目的目标不断变化的话。因此,如果您有一个绘图程序,该程序绘制由鼠标不断移动创建的一条线,并通过向绘制每帧的绘制器路径添加点来实现,则硬件呈现器将受到固定管道阻塞的影响,因为新的点将被添加到绘制器路径中。从货摊设置图形管道需要时间,这不是软件渲染者必须处理的事情。

在您询问的2 2dPainting示例中,执行画图调用的helper类正在执行许多不必要的工作;保存画家状态;设置笔/画笔;旋转画笔;恢复画笔。所有这些都比软件在硬件上的开销更大。要真正看到硬件渲染优于软件,预先计算对象在呈现循环之外的位置(画图函数),然后不做任何操作--实际上是在绘制函数中--在这里可能会显示出明显的不同。

最后,关于反混叠,您链接到的文档声明:“如果系统的OpenGL驱动程序支持所需的扩展,则OpenGL也将使用反别名。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19234191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档