Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading Qt-将OpenGL渲染从主线程移动到其他线程_Multithreading_Qt_Opengl_Rendering - Fatal编程技术网

Multithreading Qt-将OpenGL渲染从主线程移动到其他线程

Multithreading Qt-将OpenGL渲染从主线程移动到其他线程,multithreading,qt,opengl,rendering,Multithreading,Qt,Opengl,Rendering,我知道QWidgets不能在Qt中从主线程移动到另一个线程。我有一个主GUI,它有三个不同的QGLWidget来呈现不同的OpenGl内容。正如所料,QGLWidgets的帧速率在同时显示所有三个组件时会受到很大影响,但GUI本身的响应非常快,当我查看CPU使用情况时,我发现主线程仅在50%的CPU负载下运行。如果我能将渲染移动到不同的线程,我会期望更好的性能,但是我怎么能这样做呢,因为Qt不允许这样做 PS:我使用不同的计时器以所需的帧速率调用animate()方法。这是个问题吗?计时器没有达

我知道QWidgets不能在Qt中从主线程移动到另一个线程。我有一个主GUI,它有三个不同的QGLWidget来呈现不同的OpenGl内容。正如所料,QGLWidgets的帧速率在同时显示所有三个组件时会受到很大影响,但GUI本身的响应非常快,当我查看CPU使用情况时,我发现主线程仅在50%的CPU负载下运行。如果我能将渲染移动到不同的线程,我会期望更好的性能,但是我怎么能这样做呢,因为Qt不允许这样做


PS:我使用不同的计时器以所需的帧速率调用animate()方法。这是个问题吗?计时器没有达到其配置的触发频率(=所需的fps),以~15Hz的最大频率运行,但正如我所说的,GUI不会延迟,主线程也不会在CPU满负荷时运行。

您可以使用:
QtConcurrent::run


不幸的是,这还不够,因为您需要绑定OpenGL上下文的线程。