这个问题主要是由题目决定的。我尝试了Qt的示例(二油漆),并注意到,如果我试图在QGLWidget上绘图,那么相同的代码会消耗更多的CPU能力,如果我试图简单地在QWidget上绘图,则会消耗更少的CPU能力。我认为QGLWidget应该更快一些。还有一个有趣的现象:在QGLWidget中,反混叠提示似乎被忽略了。
OpenGL版本: 3.3.0
那这是为什么?
发布于 2013-10-08 08:19:58
首先,请注意链接到的文档底部的文本:
该示例显示了在Widget和GLWidget中同时执行的相同绘制操作。GLWidget中呈现的质量和速度取决于系统的OpenGL驱动程序所提供的对多采样和硬件加速的支持程度。如果缺乏对其中任何一种的支持,驱动程序可能会返回到软件渲染器上,该软件呈现器可能会以质量换取速度。
撇开这一点不说,硬件渲染并不总是比软件渲染更快;这完全取决于渲染程序被要求做什么。
软件可以超过硬件的一个例子是,如果呈现的项目的目标不断变化的话。因此,如果您有一个绘图程序,该程序绘制由鼠标不断移动创建的一条线,并通过向绘制每帧的绘制器路径添加点来实现,则硬件呈现器将受到固定管道阻塞的影响,因为新的点将被添加到绘制器路径中。从货摊设置图形管道需要时间,这不是软件渲染者必须处理的事情。
在您询问的2 2dPainting示例中,执行画图调用的helper类正在执行许多不必要的工作;保存画家状态;设置笔/画笔;旋转画笔;恢复画笔。所有这些都比软件在硬件上的开销更大。要真正看到硬件渲染优于软件,预先计算对象在呈现循环之外的位置(画图函数),然后不做任何操作--实际上是在绘制函数中--在这里可能会显示出明显的不同。
最后,关于反混叠,您链接到的文档声明:“如果系统的OpenGL驱动程序支持所需的扩展,则OpenGL也将使用反别名。”
https://stackoverflow.com/questions/19234191
复制相似问题