[英]QOpenGLWidget and multithreading
我正在使用Qt和OpenGL开发3D应用程序。 该应用程序由一个QMainWindow组成,其中QOpenGLWidget作为中央窗口小部件,而QML UI作为停靠窗口小部件。 我意识到用户输入和UI取决于渲染性能:如果我的应用以低fps的速度运行,则用户输入不会全部被捕获,并且使用UI会变得困难。
所以我正在考虑在单独的线程中进行渲染。 我尝试了几种技术,例如使用QTimer或QThread,但是在共享OpenGL上下文,调整大小或使用QPainter时总是遇到问题。
我想知道是否在另一个线程中进行渲染是一种好方法。
有什么建议吗?
谢谢。
只是不要使用QOpenGLWidget
。 对所有内容使用单个QML窗口。
渲染你的OpenGL的东西在预渲染或使用后使QML的功能QQuickWindow::beforeRendering()
或QQuickWindow::afterRendering()
信号。
那将使用QML的渲染线程,因此您无需创建它。 在qt docs中解释了用例和同步:
http://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.