我正在开发一个项目,该项目将使用OpenCL渲染图形以便在<IfModule mod_rewrite.c>
RewriteEngine On
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#This last condition enables access to the images and css folders, and the robots.txt file
RewriteCond $1 !^(index\.php|public|images|robots\.txt|css)
RewriteRule ^(.*)$ public/index.php/$1 [L]
</IfModule>
中显示。执行此操作的recommended way似乎是在QOpenGLWidget
中已存在的{{}}旁边创建第二个QOpenGLContext
,然后创建一个线程,其中此辅助上下文可以与OpenCL代码一起生效。< / p>
这样,Qt可以像往常一样在主线程中运行eventloop。每当QOpenGLWidget
决定绘制它时,它将简单地从第二个线程中准备的缓冲区中获取数据,辅助上下文和OpenCL交互操作在那里设置。
这一切听起来都不错,但是我遇到了一些问题。我的问题是关于如何在线程中创建辅助QOpenGLWidget
“当前”。因为QOpenGLContext
使用强制QOpenGLContext::makeCurrent()
作为参数,而我唯一的表面是我QSurface
中可用的表面,但在辅助线程中使用它不起作用。我收到以下错误:
无法使QOpenGLContext在另一个线程中保持最新状态
那么我应该使用什么表面?或者,我错过了什么,或者应该做些什么?