gpt4 book ai didi

c++ - 如何在 Qt5 中使 QOpenGLContext 成为当前没有表面的?

转载 作者:太空狗 更新时间:2023-10-29 21:14:50 25 4
gpt4 key购买 nike

我正在开发一个项目,该项目将使用 OpenCL 渲染图形以在 QOpenGLWidget 中显示。 recommended way要做到这一点,似乎是在 QOpenGLWidget 中已经存在的那个旁边创建第二个 QOpenGLContext,然后创建一个线程,让这个辅助上下文可以与 OpenCL 代码一起生活。

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

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

Cannot make QOpenGLContext current in a different thread

那么我应该使用什么表面呢?或者,我错过了什么,或者应该采取不同的做法吗?

最佳答案

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

关于c++ - 如何在 Qt5 中使 QOpenGLContext 成为当前没有表面的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com