gpt4 book ai didi

c++ - QOpenGLWidget 和多线程

转载 作者:行者123 更新时间:2023-11-30 03:33:34 24 4
gpt4 key购买 nike

我正在使用 Qt 和 OpenGL 开发 3D 应用程序。该应用程序由 QMainWindow 和 QOpenGLWidget 作为中央小部件和 QML UI 作为停靠小部件组成。我意识到用户输入和 UI 取决于渲染性能:如果我的应用程序以低 fps 运行,则用户输入不会全部被捕获,并且使用 UI 会变得困难。

所以我考虑在一个单独的线程中进行渲染。我尝试了多种技术,例如使用 QTimer 或 QThread,但我总是在共享 OpenGL 上下文、调整大小或使用 QPainter 时遇到问题。

我想知道在另一个线程中进行渲染是否是一个好方法。

有什么建议、建议吗?

谢谢。

最佳答案

典型的 GUI 框架并不是为直接从多线程使用而设计的,QT 也不异常(exception)。尝试从不同线程执行 GUI 操作通常会导致某种问题。

这些框架通常有一个内部事件队列,事件被放置在其中,然后一个接一个地被处理,如果框架使用得当,可以确保只从一个线程访问 GUI 相关的东西。但它们允许将额外的事件添加到队列中。

现在我们要走的路是:将整个 GUI 放在一个线程中,并在另一个线程中处理用户输入。一旦处理完用户数据,就为您的 GUI 提供适当的信息。

Qt 提供的方法有 e. G。 invoke函数或 event system .

关于c++ - QOpenGLWidget 和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761051/

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