繁体   English   中英

如何在Qt5中使QOpenGLContext当前没有表面?

[英]How to make QOpenGLContext current without surface in Qt5?

我正在开发一个项目,该项目将使用 OpenCL 渲染图形以在QOpenGLWidget显示。 建议的方法来做到这一点似乎是创建第二QOpenGLContext了一个已经存在于身边QOpenGLWidget ,然后创建一个线程,其中该辅环境可以用的OpenCL代码住在一起。

这样 Qt 就可以像往常一样在主线程中运行 eventloop。 每当QOpenGLWidget决定绘制时,它都会简单地从第二个线程中准备的缓冲区中获取数据,该缓冲区由辅助上下文和在那里设置的 OpenCL 互操作。

这一切在纸面上听起来都很棒,但我在让它工作时遇到了一些问题。 我的问题是关于如何使线程中的辅助QOpenGLContext “当前”。 因为QOpenGLContext::makeCurrent()将强制QSurface作为参数,而我唯一拥有的表面是我的QOpenGLWidget可用的QOpenGLWidget ,但在辅助线程中使用它不起作用。 我收到以下错误:

无法在不同的线程中使 QOpenGLContext 成为当前

那么我应该使用什么表面? 或者,有什么我错过了,或者应该做不同的事情?

您可以为此目的创建和使用QOffscreenSurface

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM