Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中显示图像的最佳方法_C++_Performance_Qt - Fatal编程技术网

C++ 在Qt中显示图像的最佳方法

C++ 在Qt中显示图像的最佳方法,c++,performance,qt,C++,Performance,Qt,我需要有两个要求显示图像,它必须是非常快的60-120 fps可能和低CPU性能开销显示和绘制原语和滚动。我找到了一些选择,但我不确定女巫会是最好的。 我将避免复制图像。只需输入日期即可直接写入图像 编写自定义QOpenGlWidget。优点:无图像拷贝,opengl后端。缺点:大量工作,没有实现滚动 使用QGraphicsView作为标准。优点:也可以使用opengl后端。缺点:请纠正我,如果我错过了,但图像是复制在标准的方式。 QGraphicsView,具有已实施的牵引杆接地功能。优点:无

我需要有两个要求显示图像,它必须是非常快的60-120 fps可能和低CPU性能开销显示和绘制原语和滚动。我找到了一些选择,但我不确定女巫会是最好的。 我将避免复制图像。只需输入日期即可直接写入图像

编写自定义QOpenGlWidget。优点:无图像拷贝,opengl后端。缺点:大量工作,没有实现滚动 使用QGraphicsView作为标准。优点:也可以使用opengl后端。缺点:请纠正我,如果我错过了,但图像是复制在标准的方式。 QGraphicsView,具有已实施的牵引杆接地功能。优点:无图像拷贝,opengl后端。缺点:我不知道。 你能告诉我我错过了什么解决方案,并帮助我选择最好的解决方案吗?

我认为,使用和重新实现调用,可以做你想做的事情,而无需在和之间进行OpenGL操作。如果调用不会给出所需的结果,那么采用前一种路径native paitings也是另一种选择

void FastImageItem::paint(QPainter *painter,
                          const QStyleOptionGraphicsItem *option,
                          QWidget *widget)
{
    painter->drawImage(image.rect, image, image.rect);
}

显然,您应该实现返回图像大小。

我认为对于60-120fps,您可能需要使用QOpenGLWidget并自己渲染图形。你说得对,这需要更多的工作,但同样地,你可以更好地控制绘制的内容和时间,这意味着你更有可能保持目标帧速率。@JeremyFriesner我认为这取决于系统使用的渲染方法。您有软件和硬件渲染。如果您使用纯CPU电源,而没有任何集成或专用GPU,那么您将无法获得性能提升。