Qt嵌入式动画的最佳选择?

时间:2009-04-21 14:59:11

标签: java c++ qt

我正在研究一种新型嵌入式产品的技术,该产品具有1 ghz处理器和via s3图形芯片。到目前为止,目标平台是Linux,但希望选择将其移至基于Windows的平台。

应用程序将包含按钮,图形和数字/文本显示等小部件。更重要的是,该应用程序将包含动画对象,如风扇不断旋转。

Qt似乎是一个不错的选择,因为它是跨平台的,并且为一堆小部件和动画框架提供了一个很好的API。

但是,这个动画框架非常重视CPU。用于呈现UI的目标CPU使用率为40%。使用图像旋转25个对象使用大约90%的CPU。

我们的想法是使用opengl为对象设置动画并将重负载从CPU上卸下来。

我的问题是,如果Qt是这样的最佳选择吗?我是否应该更加重视Java 2D?

4 个答案:

答案 0 :(得分:2)

OpenGL可以提升性能:

Qt for Embedded Linux and OpenGL

或者您可能需要更好的图形驱动程序(我不知道Qt Embedded是否支持您的图形芯片):

Adding an Accelerated Graphics Driver to Qt for Embedded Linux

答案 1 :(得分:1)

据我所知,Qt的动画框架可以用于连续动画,但可能不是最佳选择。我认为它更适用于瞬态动画,例如滑动小部件,或者增长/缩小的东西。我会研究使用OpenGL或可能的QGraphicsView,它允许你做更直接的绘图。

此外,如果您环顾四周,您应该能够找到告诉Qt使用OpenGL或OpenGL ES作为渲染系统后端的说明,这样可以减少对处理器的影响(假设您已经避开)已经这样做了。)

答案 2 :(得分:1)

您需要对应用程序进行分析,以便真正找出问题所在。例如,固定形状但连续旋转的图形项可以从项目坐标缓存中获益很多(参见QGraphicsItem::setCacheMode)。同样,固定图像应该被缓存并尽可能长地保存为像素图。颜色深度也可能起重要作用。应尽可能简化基于路径的复杂图形项目。

简而言之,图形性能不佳有很多原因。没有详细说明并逐一攻击它们,进入OpenGL将无法真正解决问题。它可能会加速每秒帧数(由于将一些责任转移到图形硬件的明显优势),但这是一个近期优势,如果没有发现真正的问题,它会在长期内迅速减少。 / p>

答案 3 :(得分:0)

Qt的主要卖点是它是一个跨平台的GUI工具包,这是一个很好的功能,但Java已经存在。您可能更喜欢Qt的版本,很多人都喜欢,但不要仅仅因为它是跨平台的。 This article表明Qt动画框架尚未集成到Qt中。

如果你可以在GL中编程,那么JOGL是一个明显的起点,但如果你不能意识到GL编程并不容易。您可能还会考虑使用Java3D。可能你想要的东西可以在JavaFX中完成。