簡體   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