据我所知,在早期的Qt版本中没有模块,有不同功能的单独类,包括图形类。在QT1.2中实现了Opengl的支持。然而,QPainter、QImage在早期版本中存在。那么,正确的说法是这些类是原生类(换句话说,类是原始类);opengl类--非本地类(毕竟,它是一个分离的分支)吗?我想进一步了解Qtopengl作为非本地的和替代的方法来创建2D图形ih Qt的进一步发展,本模块对本机方法的演变的影响(用于创建2D图形)。
发布于 2014-04-12 15:20:11
那么,说这些类是本地类是正确的吗?
不,它不是。
其原因是“本地人”对不同的人来说意味着不同的东西。这是解释的问题。看看你的另一个问题我们有多困惑。
现在,我认为你指的是本地的“非opengl”2/3D。这可能意味着软件栅格化,而不是直接通过显示驱动程序。所以,仍然在Qt级别上,但是没有Qt中的opengl类。
现在,我们可以回到QImage和QPainter了。是的,QPainter基本上是软件栅格化的最初一代,当时GPU并不像现在那么普通和便宜。
他们基本上完全是用软件技术进行渲染的。也就是说,它是更有限的,但它的工作没有更昂贵和较不常见的硬件。
(那是地震和其他软件产品的时代,从今天的角度来看它很有趣.)
发布于 2014-04-13 01:25:46
如果你所说的“原生”指的是“硬件辅助”,那么这条线就不再那么清晰了。请注意,QPainter可以使用各种油漆引擎来完成绘制,因此仅仅使用QPainter本身并不意味着任何事情。
如果说“硬件辅助”仅仅意味着使用CPU的遗留整数或浮点执行单元,那么是的,光栅绘制引擎确实在可用的情况下使用了各种SIMD/向量操作。光栅喷漆引擎是用来在QImage、QPixmap和非GL QWidget上涂漆的发动机.
如果“硬件辅助”指的是“由显卡硬件呈现”,那么您需要使用OpenGL绘图引擎。当你在QGLWidget或QQuickPaintedItem上作画时,就会用到它。当然,绘画仍然是由软件定义的-几何设置和着色器只是代码!这个软件运行在硬件上,可以比通用CPU更快地执行它。
考虑到现在固定功能的OpenGL管道或多或少是一种历史工件,在Qt中的所有呈现都是使用纯软件技术完成的,但软件可以在通用CPU上运行,或者利用通用CPU上的SIMD/向量执行单元,或者可以在GPU上运行。
还应该说,目前典型的Windows驱动程序除了blits之外,并没有加速GDI/gdiplus绘图。因此,当使用光栅引擎进行2D绘图时,特别是在XP等较旧的Windows版本上,Qt可以比平台本地2D绘图更快。
https://stackoverflow.com/questions/23032010
复制相似问题