Important: Please read the Qt Code of Conduct -

QML and OpenGL conflicts

  • Hello,

    I'm currently integrating an application using OpenGL in a Qt GUI where QML is mainly used. We may need one or even more OpenGL views rendered by our application.
    But as soon as something Qt is shown, the application's rendering glitches and sometimes crash, even if the Qt stuff is in a separate window.

    We investigated the problem and found that both renderings were happening in the same thread, and Qt was stealing the OpenGL context we setup in our application (with a makeCurrent() I guess), creating random conflicts.

    At first I thought that having a threaded Qt rendering could easily solve the problem.
    I saw that QtQuickWidget's rendering wasn't threaded, so I tried to use a QtQuickView instead... with no luck.

    This is a blocking problem for our project, and I would like to know if there is a way to enable threaded rendering in QML, to prevent such conflict?

    Platform: Windows

  • Moderators

    Hi @Zylann,
    I would suggest you to ask this question on qt interest mailing list. The Qt engineers could provide a good answer to it.

  • Asked...

    Apparently QtQuickView is not threaded by default, and the only way I've been told to achieve this is with a non-cross-platform way, by setting a Windows environment variable QSG_RENDER_LOOP with value "threaded".
    However, it doesn't seems to work, and the way it's enabled is not quite as I expected.

    Ideally, we would like the GUI not being responsible for conflicts or lags, and vice versa...

Log in to reply