我正在将一个旧的4.8应用程序移植到5.2.1,在那个时候,我使用QImage在QLabel中在屏幕上呈现一些原始数据。
我正在从相机抓取图像,所以我想实时显示这些图像。到目前为止,使用QImage,我实现了超过20FPS(相机可以抓取30 FPS)。
我想知道是否在OpenGL上渲染这些数据(可能在QML快速/Qt小部件新应用程序中)会比当前开发的方法更快?
考虑到下一个假设:
- 你在OpenGL中的实现正在使用HW加速
- 你的实现是使用最佳的纹理参数,显示图像(即驱动程序没有做一些转换)
使用OpenGL可以获得更好的性能。QImage仍然需要在内存和GPU中保存数据,这意味着在更新QImage时至少需要一个额外的副本。使用OpenGL,您可以将数据直接复制到GPU内存中,而不需要将数据存储在内存中的某个地方。
然而,在一个GPU上可能是最优的,在另一个GPU上不一定是最优的。所以,如果你正在实现一些需要在各种硬件上运行的东西,我建议使用QImage。
但如前所述,唯一的方法是实施和衡量。