关于C#:QImage vs OpenGL性能

QImage vs OpenGL Performance

我正在将一个旧的4.8应用程序移植到5.2.1,并在那个时候,我使用QImage在QLabel中在屏幕上呈现了一些原始数据。

我正在从相机抓取图像,所以我想实时显示这些图像。到目前为止,我使用QImage可以达到20FPS(相机能够抓取30 FPS)。

我想知道在OpenGL上渲染此数据(也许在QML Quick / Qt Widgets新应用程序中)是否会比当前开发的方法快?


请牢记以下假设:

  • 您在OpenGL中的实现使用的是硬件加速
  • 您的实现使用最佳的纹理参数来显示图像(即驱动程序未进行任何转换)

使用OpenGL可能会获得更好的性能。 QImage仍然必须同时在内存和GPU上保存数据,这意味着在更新QImage时至少需要一个额外的副本。使用OpenGL,您可以将数据直接复制到GPU内存中,而无需将数据存储在内存中的某个位置。

但是,在一个GPU上可能是最佳选择,而在另一个GPU上则不是最佳选择。因此,如果您要实现需要在各种硬件上运行的功能,则建议您选择QImage。

但是,正如所说的,唯一的方法就是实施和衡量。